int a4 = 10;
int b4 = 20;
int c = ++a4 + b4-- * 10 + --b4 - a4++;
cout << "a4=" << a4 << endl;//12
cout << "b4=" << b4 << endl;//18
cout << "c=" << c << endl;//209
int a4 = 10;
int b4 = 20;
int c = ++a4 + b4-- * 10 + --b4 - a4++;
cout << "a4=" << a4 << endl;//12
cout << "b4=" << b4 << endl;//18
cout << "c=" << c << endl;//209
这是C/C++语言的未定义行为
,也就是说,不同的编译器,可能导致运算结果的不同,不能保证结果的唯一。
原因在于++a4 --b4 这些表达式在相同优先级的情况下,求值顺序是不确定的,而其本身又是副作用表达式,所以结果就不可知了。
你有兴趣的话,可以多测试几个编译器,这是我的计算机的运行结果
a4=12
b4=18
c=218
进一步阅读
https://www.cnblogs.com/Lee-geeker/archive/2013/08/02/3232693.html