c语言运算

来源:百度知道 编辑:UC知道 时间:2024/05/21 15:04:58
int x=1,y;
y=x++;
printf("\nx=%d,y=%d",x,y);
y为什么得1
怎么算的?
没有经过 x++的运算
怎么回事

C语言里面通过副作用来改变变量的状态
x++与++x的副作用都是x = x + 1;也就是说这两个表达式都会改变变量x的状态。使x里面的值增加1。但是这两个表达式的值是不同的. x++这个表达式的值是x原来的值,而++x这个表达式的值是加1之后的值。赋值语句是把赋值号右边的表达式的值赋给赋值号左边的变量。所以
y = x++;执行的时候,先把x原来的值作为赋值号右边的表达式的值赋给y,然后把x的值加1

y = ++x; 先把x的值加1,然后再把x的值赋给y

其实两个的区别就是赋值与副作用生成的顺序不同。
这样你该明白为什么y的值是5了吧!

那要看你用是那个c语言环境了
这个问题在手册里都有说明,你找一下看看吧
原因是:在printf时,直接用的是x的值,并没有经过 x++的运算
如果是++x那么输出的就不是1了

发现这种小问题说明你用心了。在c中还有很多小问题需要注意

在X++中是先进行运算在+1 所以在那个时候Y=X的值是X没有+1时候的值也就是1 如果你想让Y=2 那你把++写在X前面 写成++X看看就知道了

运行环境不一样,结果也会不一样的!
不过如果是++x的话结果就应该都是2了!

x++是先显示x,再把x加1
而++x则是先把x加1,再显示

不太懂,关注一下