问题描述
我检测到 VS2019 C++ 和 VS Code (mingw-w64) 之间的差异是关于指针使用的前后递减。 VS2019 中的以下代码显示了打印数组的第三个元素 12 (a[2]):
答:
int a[] = { 10,11,12,13,14 };
int *p = a;
int *q = p + 3;
*q = a[(q--) - p];
cout << *q << endl;
如果我将后递减运算符更改为前递减:
乙:
int a[] = { 10,14 };
int *p = a;
int *q = p + 3;
*q = a[(--q) - p];
cout << *q << endl;
它再次打印 12 (a[2])
但是如果我使用 mingw-w64 在 VS Code 中运行代码,那么第一个代码块 A: 显示数组的第四个元素,13 (a[3]) 和块 B: 显示第三个元素,12 (a[2])
为什么 VS2019 在这种情况下忽略前后递减和 mingw-w64,如果我在赋值的左侧使用相同的指针,我用它来索引数组?
您对这种行为有任何经验/解释吗?
谢谢
Onur
ps 这是一道试题,不是真实案例。请不要问我这段代码的逻辑用法
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)