问题描述:
这两个程序的结果为什么不同呢?
#include <iostream>
using namespace std;
int main()
{int a=1;
a=(a++)+(++a);
cout<<a<<endl;
return 0;
}
结果是5
#include <iostream>
using namespace std;
int main()
{int a=1;
(a++)+(++a);
cout<<(a++)+(++a)<<endl;
return 0;
}
结果是4
为什么会这样??高手解答一下吧!
问题解答:
因为编译器对各表达式的运算有不同的先后次序,为了使代码优化而出现隐式错误。
因此建议不要在同一个表达式中使用多次增量和减量运算符;不要在函数参数中使用增量和减量运算符。
不同编译器的结果不一样,一般不建议过多的用++ / --操作。。至于为什么得出那些答案,你要去查查编译器如何工作的,不必深究,考试不会出