第一个:先++a,a就是5了。然后a=a。a=5.后面呢,++a,a=5.然后a=4.a就等于4了。
后面的话,先算等号右边,a++,a=5,左边a++。a=6.a+=a,a=12.其实你不用纠结这个问题。你要是在工作中写这种代码,肯定被批的。只是为了考试。。。而且这个和编译器还有关系的。
第一个(++a)=a , a先自加,等于5。然后将a赋给a即:a=a。即结果为:5.
第二个(++a=a, a先自加,等于5。然后将4赋给a,即:a=4。即结果为:4.
由于赋值运算符“=”的优先级是最低的,而关系运算符“()”的优先级是最高的,故总是先关系运算符而后赋值运算符。然后从左至右顺序执行。故结果如上。
根据以上的解释,对于第二题:(a++)+=(a++)即为:(a++)=(a++)+(a++)
由于3个()的优先级一样,故先从左至右。即:先a=5,而后两个括号内的a++的结果为a=6
最后a=a+ a a的最后结果为12
不要为这种纠结