#include
using namespace std;
int main()
{
int a = 5;
int b = (++a) + (++a) + (++a);
int a1 = 5;
int b1 = (++a1) + (++a1);
cout <<"a:"<< a << endl <<"(++a) + (++a) + (++a):" < cout << "a1:" << a1 << endl <<"(++a1) + (++a1):" << b1 << endl;
return 0;
}
结果:
在表达式中的“()”优先级高于“+”
所以(++a)+(++a)会优先执行++a两次,此时a为7,而(++a)整体值也为7,然后执行“+”也就是7+7=14
(++a)+(++a)+(++a)执行顺序相同,表达式最终值为8+8+8=24
a是一块空间存储的值,不可能同时又是6又是7又是8,所以也不可能是6+7+8这样的结果
b=(++a)+(++a)+(++a)这样的写法本事就是有问题,不同的编译器会有不同的结果。简单解释下就是,我们并不知道对a求值的时候a是多少,我们能确保的仅仅是在自增后才对a求值.所以,有可能在对第一个++a求值的时候,已经完成了三次自增。了解更多可百度求值顺序。
b=6+7+8=21
a=8