C语言自增题~~求助

发布时间:2024-05-21 07:09 发布:上海旅游网

问题描述:

有个题目
main()
{
int x=2,y,z;
y=(++x)+(x++)+(++x);
z=(x--)+(--x)+(x--);
printf("x=%d,y=%d,z=%d\n",x,y,z);
}
这答案是2,12,12
但是当我减少一个自增运算也就是
main()
{
int x=2,y;
y=(++x)+(x++);
printf("x=%d,y=%d\n",x,y);
}
答案是x=4,y=6
为什么y不是7呢.....

问题解答:

++x是先给X的值加1,然后再计算代入表达式计算;x++是先代入表达式计算后,x的值再加1;
x=2,y=(++x)+(x++);先计算++x,x的值由2变为3,下面一个是x++,应该先代入表达式y=x+x=3+3=6;此后x的值加1,变为4;最后输出x,y当然是4,6了
够详细了吧,还不懂的话,我就无能为力了,给分吧~

在自加和自减的时候!
如y=(++x)+(x++)+(++x);
C并没有规定语句执行的先后顺序!
可能从左到右也可能从右到左!不同的电脑结果就会出现不同的结果!
我想你应该知道原因了 吧

热点新闻