可能的重复:
意外的求值顺序(编译器错误?) https://stackoverflow.com/questions/5214611/unexpected-order-of-evaluation-compiler-bug
我无法预测该程序的输出:
#include<iostream>
using namespace std;
int *p(int *a)
{
(*a)++;
return a;
}
int main()
{
int i=0;
cout<<i++<<" "<<(*p(&i))++<<" "<<i++<<" "<<i<<endl;
return 0;
}
在vs2008中编译时,输出3 2 0 4
。任何人都可以解释为什么它不是0 2 3 4
?
注意:如果没有函数调用,效果很好p
.
提前致谢!
未定义的行为。什么都可以做。
See 这个答案 https://stackoverflow.com/a/5214681/129570以获得一个很好的解释。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)