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
浏览 1112回答 3
3回答

繁华开满天机

逗号表达式从左往右依次计算,其结果是最右边的表达式的值。逗号表达式具有最低优先级。这个问题重点在括号里面的计算过程:首先计算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

心有法竹

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=13c+8这个无意义。没赋值。++c,这时候c=14a=3+14=17

炎炎设计

a=17 按计算顺序如下:c+=c++     // c=6+6=12 然后 自加1 等于13c+8 // 因为是逗号表达式  对c的值没有影响,不用考虑++c        //13+1=14a = 3+14=17
打开App,查看更多内容
随时随地看视频慕课网APP