黑马程序员技术交流社区

标题: 一道关于自增的小问题 [打印本页]

作者: anywayDo    时间: 2015-5-10 23:26
标题: 一道关于自增的小问题
  1. int count=0;
  2. for(int x=0;x<10;x++)
  3. {
  4.         count=count++;
  5. }

  6. System.out.println(count);
复制代码
count等于几。。
作者: Xiao_yu    时间: 2015-5-10 23:44
等于0,因为你在for循环的方法体内写的是count=count++;因为count初始值为0,每次执行这条语句时,先赋值给等号左边,再自增,则这句话执行的结果为0,然后下次循环0的这种运算,就是一直为0,最后循环多少次都是0
作者: ddddk    时间: 2015-5-10 23:52
Xiao_yu 发表于 2015-5-10 23:44
等于0,因为你在for循环的方法体内写的是count=count++;因为count初始值为0,每次执行这条语句时,先赋值给 ...

确实是0
作者: 我干阿衰    时间: 2015-5-11 00:03
这也来水分么
作者: kolen.j    时间: 2015-5-11 01:09
0呢,上楼正解
作者: anywayDo    时间: 2015-5-11 22:26
Xiao_yu 发表于 2015-5-10 23:44
等于0,因为你在for循环的方法体内写的是count=count++;因为count初始值为0,每次执行这条语句时,先赋值给 ...

正解。。答案好详细。。
作者: anywayDo    时间: 2015-5-11 22:27
ddddk 发表于 2015-5-10 23:52
确实是0

恩恩。。平常不注意,很容易出错的
作者: anywayDo    时间: 2015-5-11 22:28
我干阿衰 发表于 2015-5-11 00:03
这也来水分么

就是觉得还是挺经典的一个小问题。。but,you know that..
作者: anywayDo    时间: 2015-5-11 22:30
我干阿衰 发表于 2015-5-11 00:03
这也来水分么

就是觉得还是挺经典的一个小问题。。but,you know that..
作者: anywayDo    时间: 2015-5-11 22:31
kolen.j 发表于 2015-5-11 01:09
0呢,上楼正解

恩恩。。正确答案参考一楼。。
作者: 魔蝎座    时间: 2015-5-11 22:41
确实是0!!!
作者: 追忆似水年华    时间: 2015-5-11 22:42
0是正解。
作者: anywayDo    时间: 2015-5-11 23:23
追忆似水年华 发表于 2015-5-11 22:42
0是正解。

原来都知道答案。。
作者: liyuer    时间: 2015-5-12 00:16
Xiao_yu 发表于 2015-5-10 23:44
等于0,因为你在for循环的方法体内写的是count=count++;因为count初始值为0,每次执行这条语句时,先赋值给 ...

那请问count在里面都代表是一个对象吗?
作者: c523106    时间: 2015-5-12 00:44
注意细节,先赋值,后增
作者: Hison_lian    时间: 2015-5-12 01:07
确实是0,一不小心会算错的
作者: c523106    时间: 2015-5-12 08:50
count++是一个表达式,是有返回值的,它的返回值就是count自加前的值,Java对自加是这样处理的:首先把count的值(注意是值,不是引用)拷贝到一个临时变量区,然后对count变量加1,最后返回临时变量区的值。程序第一次循环时的详细处理步骤如下: 步骤1 JVM把count值(其值是0)拷贝到临时变量区。 步骤2 count值加1,这时候count的值是1。 步骤3 返回临时变量区的值,注意这个值是0,没修改过。 步骤4 返回值赋值给count,此时count值被重置成0。
作者: 快乐Anne    时间: 2015-5-12 14:18
楼上讲的好清楚,学习了
作者: yearn    时间: 2015-5-12 15:42
没注意看还真的会出错!
作者: anywayDo    时间: 2015-5-12 15:53
c523106 发表于 2015-5-12 08:50
count++是一个表达式,是有返回值的,它的返回值就是count自加前的值,Java对自加是这样处理的:首先把coun ...

讲的好详细。。学习了
作者: lostaloneesk    时间: 2015-5-12 15:53
这个问题在java里面的确是0,不过肯定不推荐这么写,只要换个语言结果就可能完全不一样,这种代码没有什么任何实际的意义
作者: anywayDo    时间: 2015-5-12 15:55
lostaloneesk 发表于 2015-5-12 15:53
这个问题在java里面的确是0,不过肯定不推荐这么写,只要换个语言结果就可能完全不一样,这种代码没有什么 ...

额。。只是碰到了,觉得还蛮有趣,就和大家分享下。。至于其他语言,真心不知道。
作者: libin    时间: 2015-5-12 16:57
确实是这样,又温习了自增。。。




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