表达式问题

来源:百度知道 编辑:UC知道 时间:2024/05/14 15:16:54
在VC++6.0中
int x=1,sum;
sum=(x=2)+(++x);
cout<<sum<<endl;
输出是什么?
表达式x=2和++x的值储存在哪?
是指向x吗??
请详细说明变量和表达式值的变化谢谢
在vc++中上题答案是6

请帮看下下个问题,说明一下过程,谢谢。

int x=1,sum;
sum=(++x)+20+(++x);
cout<<sum<<endl;
x=1;
sum=(++x)+(++x)+(++x);
cout<<sum<<endl;

6

x=2 储存在x
++x的值储存在 缓冲器里

是指向x吗? 不

x=1
(x=2) -- x=2
(++x); -- 缓冲器=x+2=4
sum= 2 + 缓冲器
sum=6

如果
(x=3)
缓冲器=x+2=5
sum=8
-------------------

这种奇怪的结果告诉我们,不要写
sum=(x=2)+(++x); 这种怪语句。
不同的编译器会得不同结果。

主要是难在sum=(x=2)+(++x); 这句

等号右边这样计算。
先x=2,这时X为2
又加加X,X为3
(X=2)的结果为2,所以2+3=5;
所以sum为5
至于 x=2和++x的值储存在哪,都在堆里啊……

值储存在已定义的名为X的空间中,输出结果是4

输出值为 5
表达式x=2 是将2赋值给变量x,此时x的值为2
++x相当于x=x+1,但是与x++不同的是++x先完成自加,然后再参与表达式的运算,而x++是先参与表达式的运算,在完成x的自加
x=2和++x并不改变x的存储地址,只是x值的变化。