黑马程序员技术交流社区

标题: 关于自增自减 [打印本页]

作者: 这这这好棒    时间: 2015-6-4 23:40
标题: 关于自增自减
int  i=2;i=i++;System.out.println(“i=”+i);问输出结果是多少?
作者: 杜黎明    时间: 2015-6-4 23:58
结果还是2
作者: rexih    时间: 2015-6-5 00:04
杜黎明 发表于 2015-6-4 23:58
结果还是2

为啥是2?又没有指明在循环中
作者: 杜黎明    时间: 2015-6-5 00:14
i=i++;代码分两步将第二个i的值赋给第一个i还是2,第二个i再自加等于3 而第二个i没有存下来,只有第一个i存下来了,为2
作者: 守株人    时间: 2015-6-5 00:56
楼上正解,这里如果用C语言运行答案就是3,说明了C语言与Java语言的虚拟机是不同的
作者: 林RM    时间: 2015-6-5 01:06
答案2,先赋值再++
作者: lizhi    时间: 2015-6-5 07:04
i++是运算了,再自加
作者: 嘎路的米    时间: 2015-6-5 07:18
我还以为是3呢,居然是2,懂了
作者: 古风_菜鸟    时间: 2015-6-5 08:02
谁能说说为啥没有保存下来
作者: 牛奋    时间: 2015-6-5 08:11
当需运算的数++﹙--﹚的左边时,这个数先进行其他运算,然后再++﹙--﹚,当在右边时,先++﹙--﹚,然后再进行其他运算。当单独出现的时候,数在左在右效果是一样的。
作者: 夏尔    时间: 2015-6-5 08:31
这个结果是2 先赋值再自增
作者: 山崩地裂    时间: 2015-6-5 08:53
学习了。重新加深了理解。
作者: hellotaomi    时间: 2015-6-5 09:04
这种问题也太偏了吧,而且C和java运行都不一样的
作者: 少年闰土    时间: 2015-6-5 10:17
这个i = i++;的操作可能相当于以下三步操作:①把变量i的值取出来,放在一个临时变量里(我们先记作temp);②把变量i的值进行自加操作;③把临时变量temp的值作为自增运算前i的值使用,在本题中就是给变量i赋值。因此,经过以上三步操作以后,虽然变量i在第②步操作中进行了自增运算,但第三步操作以后又把原来的值赋给了它

学习自:http://blog.csdn.net/brooksychen/article/details/1624753
作者: 海角秋风    时间: 2015-6-5 11:07
学习了啊。。。之前虽然知道答案是2 ,但是不知道3存没存的问题。。。
作者: forTomorrow    时间: 2015-6-5 11:24
我理解也是3,可运行结果是2,如果是C的话 应该是3 ,不知道具体在内存中是怎么个运行的

作者: wangkai    时间: 2015-6-5 13:48
学习学习
作者: wangyu    时间: 2015-6-5 20:44
只有14楼说的是正确的,i++后i其实是变成了3,但是被2给覆盖了
作者: 飘过的云    时间: 2015-6-5 21:10
其实这是一个结论吧,代表了一类 ,不能理解,就记住了, 谢谢 ,又复习了一遍
作者: yang2015    时间: 2015-6-5 22:42
学习学习
作者: 刘旭1    时间: 2015-6-5 22:56
这样的结果呢      i=(i=i++)
作者: 灰色水晶梦    时间: 2015-6-5 23:03
貌似没变啊
作者: 青龙李坤    时间: 2015-6-5 23:08
int i=2;System.out.println(++i);输出是3
作者: 青龙李坤    时间: 2015-6-5 23:09
int i=2;System.out.println(i++);输出是2;
作者: 胡亚辉    时间: 2015-6-6 12:07
基本变量传递  变量不变 结果还是2
作者: SouthKai    时间: 2015-6-6 23:38
先赋值,在自加




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