微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

指针算术 post 和 pre decrement 在 VS2019 和 VS Code mingw-w64 中的行为不同

如何解决指针算术 post 和 pre decrement 在 VS2019 和 VS Code mingw-w64 中的行为不同

我检测到 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 举报,一经查实,本站将立刻删除。