C语言 int p=5 q=(++p)+(++p)+(++p) q=?

来源:百度知道 编辑:UC知道 时间:2024/06/09 11:38:57
为什么答案是22?
请详细说明,谢谢

.. 不同的编译器可能会有不同的答案.. C语言规则里没有规定这种情况下答案一定是22.
所以没有原因. 这是编译器决定的.

这个和cout<<m++<<m++<<m++<<endl;
一样,对于编译器是未定义行为. 不同编译器有不同结果. 测试你会发现,
q=++p 答案是6. q=++p + (++p) 答案会是14,也就是7+7,之后再加下去,,比如q=++p+(++p)+(++p)+(++p)+(++p),就是对了,就是7+7+8+9+10. 也就是问题出在前一个加号上.
如果有人知道机制,请告之

不同的编译器会得出不同的答案,一般用TC2.0得出的答案是18,TC3.0得出的好像是21