先来看一道题:
若有int num = 7, sum = 7;则计算表达式sum = num++, sum++, ++num后sum的值为__
(A)7 (B)8 (C)9 (D)10
答案为:B
对于此题网上有这个解释:https://zhidao.baidu.com/question/355821990.html
最佳答案的解释为:
n = 表达式1,表达式2,表达式3。。。。。。表达式n ==> n = 表达式n
但这个解释是不正确的,若将题目改为:
(1)、int num = 7, sum = 1;
sum = num++, ++num, ++sum;
或
(2)、int num = 7, sum = 7;
sum = ++num, num++;
(代码2请读者自行验证)
若以上面的解释,则sum应该等于2,但实际编译结果为:
sum = 8, num = 9;
所以正确的做法应为:
sum = num++;
sum++;
++num;
也就是说对sum最初赋值有影响的只有“表达式1”,后续的表达式2,表达式3.。。。。。表达式n,不会对等号左侧的n产生影响(除表达式与n有关,如n++;即该例子中:sum++)。