黑马程序员技术交流社区

标题: 问一个简单的问题、关于x++ [打印本页]

作者: 马强    时间: 2012-4-4 19:23
标题: 问一个简单的问题、关于x++
int x =0 ;
x = x++;
sop(x);
输出的是0.  想问的是在内存中 x++怎么操作的,具体加到了那里?
作者: 胡元    时间: 2012-4-4 19:30
如果你想要X自增的话,直接X++就好了,再把它赋值的话,表达式会把x=0先赋给x,然后再自增,
但是自增后你没有把它保存,相当于废话!
如果是int y = x++;内存中的运算是把x得值赋给变量y,然后x自增运算!
作者: 刘泰    时间: 2012-4-4 19:39
x++ 和++x是不同的,比如:
int y=1;
int x=y++;
这样打印x=1,y=2;x=y++是先把y赋值给x以后再自加
int y=1
int z=++y
这样打印的是,y = 2; z=2;++y是把y自加以后再赋值给z,
y++和++y是不同的

作者: 邱俊杰    时间: 2012-4-4 19:42
内存开个控件保存x=0, 然后执行X的自增等于1,但是你没定义变量保存,所以你打印出来的X还是0, 至于加到哪里可能就自增了一次吧。
作者: 邱俊杰    时间: 2012-4-4 19:43
邱俊杰 发表于 2012-4-4 19:42
内存开个控件保存x=0, 然后执行X的自增等于1,但是你没定义变量保存,所以你打印出来的X还是0, 至于加到哪 ...

把控件  改成  空间
作者: 安浦鑫    时间: 2012-4-4 19:45
X++  先执行运算符操作,再执行自加
++X  先自加,再执行运算符操作
直接加到这个变量值本身
作者: 王永旺    时间: 2012-4-4 22:42
x++是先赋值,在执行x++操作的。具体内存里的运算不用了解的太清楚。
因为像这样的语法实际编程没有人会用的,所以考虑太多只会浪费自己的时间。

作者: 薛飞飞    时间: 2012-4-4 23:22
x++是先把自身的值赋给变量,然后自身再做++运算
作者: 姜志钦    时间: 2012-4-4 23:47
这里涉及到一类很容易混淆的问题,经常会遇到类似X++ 与++X ,区别就是前者先赋值或输出,再执行自身加1。而后者就是先执行+1然后再赋值或输出。
作者: 刘_浩    时间: 2012-4-5 01:02
x=x++;的计算是先进行的x=x,当然输出的是0。然后者是x=x+1进行。
作者: 陈苓    时间: 2012-4-5 01:52
http://bbs.itheima.com/forum.php?mod=attachment&aid=MTU0M3wwYzEwYzk3M2M2MWE2Nzk0YWMwYTg3ZGY3MGQ3NzllMnwxNzMxNTEzNzM1&request=yes&_f=.png

自增运算图.png (33.18 KB, 下载次数: 75)

自增运算图.png





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2