黑马程序员技术交流社区

标题: 关于++运算符 [打印本页]

作者: a6658637    时间: 2015-9-7 00:40
标题: 关于++运算符
class Test {
        public static void main(String[] args) {
                int sum = 0;
                int y = 0;
                for (int i = 0;i < 10 ;i++ ) {
                        sum=sum++;
                        y=sum++;
                }
                System.out.println(sum);//10
                System.out.println(y);//9
        }
}   
为什么答案输出的是10和9?求大神解释
作者: 洋葱头头    时间: 2015-9-7 09:42
sum=sum++; 这个永远是在一个值  
因为先把sum这个值存保存到一个域  等表达式运行完 在把sum赋给sum  结果还是0

y=sum++;  
那这个你能理解了把  sum++把运行之前的值赋给了y  所以y是9  sum是10
作者: l631356126    时间: 2015-9-7 11:11
最后一步是sum自+1 打印输出, y直接输出sum 所有最后结果是sum=10,y=9;
作者: 79481535    时间: 2015-9-7 11:52
sum++的意思是把sum的值加1后重新付给sum。其中如果是y=sum++,那么这个公式的运算顺序是:先把sum的值付给y,然后sum再自己+1后付给sum。所以y要比sum少1.
作者: mah707    时间: 2015-9-7 12:09
你想要的结果应该都是9
但是 循环最后 y=sum++;这一句sum=9赋值给力y,再自加保存就是sum=10了
作者: Mr.W    时间: 2015-9-7 12:24
楼上正解
作者: ccc129074288    时间: 2015-9-7 12:36
   把 a++  和 ++a 放一起理解比较好
作者: 张寰宇    时间: 2015-9-7 12:37
谢谢分享,学习了。
作者: sansu    时间: 2015-9-7 18:54
你在for 之前就初始化int y= o   int  sum=0
    第一次for循环     sum=sum++   等于  1  逻辑: sum++等价于(0++)在赋值给sum     输出  为 1  
                                 y=sum++   此时已经y被初始化等于0了,  直接输出 0


作者: 15210373205    时间: 2015-9-7 18:58
楼上正解
作者: a6658637    时间: 2015-9-7 22:50
洋葱头头 发表于 2015-9-7 09:42
sum=sum++; 这个永远是在一个值  
因为先把sum这个值存保存到一个域  等表达式运行完 在把sum赋给sum  结 ...

嗯嗯,今天老师解答了,sum=sum++其实就是一句废话,不用看的,顿时恍然大悟
作者: 0825王欢    时间: 2015-9-8 00:17
顶一下、、、、、、
作者: 迷茫不堪的年纪    时间: 2015-9-8 17:29
直接忽略 y=sum++;   +1之前的一个运算




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