void main() { int x=4,y; y=(++x)+(++x); printf("%d",y); } y的值为什么是12?不是11吗

void main()
{
int x=4,y;
y=(++x)+(++x);
printf("%d",y);
}
y的值为什么是12?不是11吗

这个问题主要与运算符的优先级有关的,我debug了一下。

所以说应该是两个括号先执行了,然后x的值变成了6。然后又执行了x+x最后的出的结果是12.

温馨提示:内容为网友见解,仅供参考
第1个回答  2020-03-28
y=(++x)+(++x); //++ 在加运算之前执行,++X在4的基础上+1变为5,再次++运行变为6,本回答被网友采纳
第2个回答  2020-03-30
存在一个优先级问题 , ++x的优先级高于 +
先进行+1后进行使用 两次全部加完以后才进行使用,
即x=6后才进行相加
等于12
相似回答