请问y=(++x)+(x++)+(++x)结果是多少?具体的算法和计算步骤。

来源:百度知道 编辑:UC知道 时间:2024/05/10 12:15:17
x=2.
前面两位答案都和上机的答案不符,请大家帮忙算算呀。
前面的答案都不对呀,请大家快来帮忙看一下,上机的结果是12请高手们分析一下原因!!!!!!!!

首先 这个执行结果在不同的编译器有着不同的结果 但是结果只有两个 一个是12 另一个是10

对于c++6.0来是 执行printf 是从右往左的执行顺序, 但楼主说是12 可见你的编译器是从左往右的顺序

y=(++x)+(x++)+(++x)
楼主的编译器是这样: ++x=2+1=3 继续赋值 x++=3+1=4 继续 ++x=4+1=5
最后的结果自然是12了

而c++6.0则是10; 因为它从右往左,刚好相反
++x=2+1=3 继续赋值 x++=3(注意这个地方的理解) 继续 ++x=3+1=4
3+3+4=10

因为我是用c++6.0 以下结果在c++6.0中通过:
10
Press any key to continue

#include <stdio.h>

int x=2;

void main()
{

int y=(++x)+(x++)+(++x);
printf("%d\n",y);
}

y= (++x) ;先加后用 这里 x=3 了
+(x++) ;先用后加 这里x=3 了 但是加完x=4
+(++x) ;先加后用 这里 x=5 了
所以y=11

1.++x x=3
2.x++ x=3
3.++x x=4
4.y=3+3+4=10
5.x=x+1=5

将等号右边的先做++x因此x=3然后就做x++因为“++”在x后边所以执行x++时是在本行执行完了以后即是在赋值完了后再执行,所以(++x)+(x++)=6,最后还有(++x),即x=4了所以结果就是10.
当这行执行完了以后x=5了。
等价于
x+=1;
y+=x;
y+=x;
x+=1;
y+=x;
x+=1;

请问y=(++x)+(x++)+(++x)结果是多少