为了账号安全,请及时绑定邮箱和手机立即绑定

int a,c=5; a=2+(c+=c++,c+8,++c); 则 a=?

int a,c=5; a=2+(c+=c++,c+8,++c); 则 a=?

12345678_0001 2019-05-08 11:07:37
int a,c=5; a=2+(c+=c++,c+8,++c); 则 a=
查看完整描述

3 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

逗号表达式从左往右依次计算,其结果是最右边的表达式的值。逗号表达式具有最低优先级。
这个问题重点在括号里面的计算过程:
首先计算c += c++;
c++的值是5,c的值是6,接着c += 5, 所以c的值是11。整个表达式的值是c,即11
然后计算c + 8, 结果是19,表达式的值是19
最后计算++c,c的值由11变成12,整个表达式的值是c, 即12
所以a = 2 + (11, 19, 12)
a = 2 + 12 ,a的值是14

查看完整回答
反对 回复 2019-05-13
?
心有法竹

TA贡献1866条经验 获得超5个赞

int c=6;
int a;
a = 3 + ( c+=c++;c+8;++c);
计算是从左到右的。先括号。同时,c++是先执行操作,后+1. ++c是先加1,再执行操作。

如果是这样的。则
c+=c++;等价于c= c + c++;c= 6 +6+1; 这时候c=13
c+8这个无意义。没赋值。
++c,这时候c=14
a=3+14=17



查看完整回答
反对 回复 2019-05-13
?
炎炎设计

TA贡献1808条经验 获得超4个赞

a=17 按计算顺序如下:

  1. c+=c++     // c=6+6=12 然后 自加1 等于13

  2. c+8 // 因为是逗号表达式  对c的值没有影响,不用考虑

  3. ++c        //13+1=14

  4. a = 3+14=17


查看完整回答
反对 回复 2019-05-13
  • 3 回答
  • 0 关注
  • 1111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信