今天看到一道关于i++的题目:
- #include <stdio.h>
- int main()
- {
- int x;
- x = 4;
- x += x-=x-x--;
- cout<<x<<endl;
- return 0;
- }
问:打印出的x值是多少?
结果为7,分析如下:首先计算x-x,值为0,然后计算x-=x,此时x值为4。然后计算x+=x;此时x值为8.最后再执行x--,使x最终值变为7.如果将计算x的表达式改为x += x-=x-(--x);则最终结果为6.
再看下面的一个例子:
int main()
{
i = 5;
printf("%d",i = i - i++);//输出结果为0
printf("%d",i);//输出结果为1
}
以上就说明,i=i+1的动作是在第一个printf语句之后才执行的。

被折叠的 条评论
为什么被折叠?



