黑马程序员技术交流社区

标题: 求解,运行结果为毛是0 [打印本页]

作者: houzhiming    时间: 2016-7-27 14:58
标题: 求解,运行结果为毛是0
如下代码:
public static void main(String[] args) {

       int count=0;

       for(int i=0;i<10;i++){

          count=count++;

       }

       System.out.println(count);

    }
运行结果不是10吗?

作者: 花陌相惜    时间: 2016-7-27 14:58
count =count++;第一次运行  count++等于0   把0赋值给count
如果你要想看出区别  可以把count=count++改成 int a=count++;
分别输出a的值和count的值  这样便于自己理解  及count++运行后再加1的理解
作者: cat73    时间: 2016-7-27 15:01
count=count++;
你可以把它看成
count=count;
也就是什么都没做。

作者: houzhiming    时间: 2016-7-27 15:02
cat73 发表于 2016-7-27 15:01
count=count++;
你可以把它看成
count=count;

不是couut++了吗
作者: re0    时间: 2016-7-27 20:15
  System.out.println(count);放在for的{}中试试

作者: re0    时间: 2016-7-27 20:17
System.out.println(count);放在for的{}中试试

作者: re0    时间: 2016-7-27 20:18
[System.out.println(count);]放在for的{}中试试
作者: raining    时间: 2016-7-27 22:04
答案是 9  
因为count = count++
是先 count 的值赋给 count ,然后在count进行++
即是count = count ; count++;
{:2_30:}
朋友看看对不
作者: a946608523    时间: 2016-7-27 22:23
public static void main(String[] args) {

       int count=0;

       for(int i=0;i<10;i++){

          count=count++;

       }

       System.out.println(count);

    }
运行结果不是10吗?


你的是0,你要把count=count++  改成count++   
因为count++是先用后变,意思就是先等于0,然后你再加1呀,但是已经循环完,然后从头来,又是取0
作者: a946608523    时间: 2016-7-27 22:24
还有一种做法就是count=count++,改成count=++count  ,这个是先变后用的,大兄弟
作者: GoodMan…    时间: 2016-7-27 22:34
因为++放在后面并参与运算,所以先参与运算后才进行自加
作者: GoodMan…    时间: 2016-7-27 22:37
因为++放在后面并参与运算,所以先参与运算后才进行自加
作者: GoodMan…    时间: 2016-7-27 22:39
因为++放在后面并参与运算,所以先参与运算后才进行自加
作者: GoodMan…    时间: 2016-7-27 22:40
因为++放在后面并参与运算,所以先参与运算后才进行自加
作者: 敲代码小蚂蚁    时间: 2016-7-28 00:36
你的循环控制条件i呢?你这调不出循环呀
作者: houzhiming    时间: 2016-7-28 17:25
raining 发表于 2016-7-27 22:04
答案是 9  
因为count = count++
是先 count 的值赋给 count ,然后在count进行++

答案是0,,,
作者: yezilail    时间: 2016-7-28 19:49
把count+j前面的赋值操作去掉即可。
上面的count是常量,下面你从新赋值,相当于赋值给咯一个变量,每循环一次,内存中会创建一个变量count
作者: yezilail    时间: 2016-7-28 19:50
直接
             count++;

就可以了
作者: houzhiming    时间: 2016-7-28 22:48
花陌相惜 发表于 2016-7-28 22:44
count =count++;第一次运行  count++等于0   把0赋值给count
如果你要想看出区别  可以把count=count++改 ...

嗯嗯,谢谢哈
作者: 花陌相惜    时间: 2016-7-28 22:52
houzhiming 发表于 2016-7-28 22:48
嗯嗯,谢谢哈

因为你count++之后 又赋值给了count , count++之后的值没有得到体现,就直接被覆盖了
作者: 花陌相惜    时间: 2016-7-28 22:53
houzhiming 发表于 2016-7-28 22:48
嗯嗯,谢谢哈

因为你count++之后 又赋值给了count , count++之后的值没有得到体现,就直接被覆盖了
作者: houzhiming    时间: 2016-7-28 22:56
花陌相惜 发表于 2016-7-28 22:53
因为你count++之后 又赋值给了count , count++之后的值没有得到体现,就直接被覆盖了 ...

搜嘎,懂啦,
作者: 花陌相惜    时间: 2016-7-28 22:59
houzhiming 发表于 2016-7-28 22:56
搜嘎,懂啦,

嗯嗯!
作者: 花陌相惜    时间: 2016-7-28 23:04
houzhiming 发表于 2016-7-28 22:56
搜嘎,懂啦,

嗯嗯!懂了就好!慢慢来!都要努力!
作者: 虎嗅蔷薇    时间: 2016-7-28 23:43
哥们 你的循环,是在for中,
作者: 王清术    时间: 2016-7-30 22:26
你这里是后加加,所以每一次都是先把0赋给count。
作者: 王清术    时间: 2016-7-30 22:29
你这里是后加加,所以每一次都是先把0赋给count。
作者: yihaiyang    时间: 2016-8-2 10:15
name = name
作者: 雪连城    时间: 2016-8-21 00:11
果断被你给蒙蔽了{:2_34:}




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