int x,a=2,b=3,c=4;x=++a+b+++c++;为什么x等于10?

int x,a=2,b=3,c=4;x=++a+b+++c++;为什么x等于10?怎么算都觉得不对,求大神解答

这里需要注意++的前缀和后缀用法的区别:

前缀使用时,如++a,相当于

a = a + 1;
return a;

因此++a返回的是a自增之后的值;

后缀使用是,如a++,相当于

int tmp = a;
a = a + 1;
return tmp;

因此a++返回的是a自增之前的值。

回到这个式子,按照优先级规则以及前面的讨论结果,相当于

x=(++a)+(b++)+(c++)=(2+1)+(3)+(4)=3+3+4=10

也就是说,++a返回的是a自增之后的值,而b++和c++返回的是b和c自增之前的值,所以结果是10。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-04-07
等价于:
a=a+1;
x=a+b+c;
b=b+1;
c=c+1;
你看看,x是不是10?
相似回答