use*_*306 3 c++ arrays pointers
我的老师给了我这个代码,它返回31,40,但我无法弄清楚原因.它返回它的原因是什么原因?
void main() {
int *ptr;
int arr[5] = { 10, 20, 30, 40, 50 };
ptr = &arr[3];
cout << ++*ptr-- << ", " << *ptr;
}
Run Code Online (Sandbox Code Playgroud)
cout << ++*ptr-- << ", " << *ptr;
Run Code Online (Sandbox Code Playgroud)
是
operator <<(cout.operator <<(++*ptr--), ", ").operator <<(*ptr);
Run Code Online (Sandbox Code Playgroud)
问题可以简化为:
f(f(ptr--), ptr)
Run Code Online (Sandbox Code Playgroud)
而在f(ptr--)和之间的评估顺序ptr是未指定的(并且更具体地说在ptr--和之间ptr).
所以你得到了给定代码的未定义行为.
| 归档时间: |
|
| 查看次数: |
325 次 |
| 最近记录: |