num++和++num在逗号表达式中的计算顺序

来源:互联网 发布:便笺软件 编辑:程序博客网 时间:2024/05/21 10:33

先来看一道题:

若有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++)。

原创粉丝点击