黑马程序员技术交流社区

标题: 谁能告诉我两个结果为甚么不一样吗?? [打印本页]

作者: anyway1919    时间: 2015-9-12 13:25
标题: 谁能告诉我两个结果为甚么不一样吗??
  1. package com.hmtest.demo;

  2. /**
  3. * 谁能告诉我这两个的差别,一个运算结果是0,一个是10
  4. *
  5. */
  6. public class Client {
  7. public static void main(String[] args) {
  8.         int count =0;
  9.         for (int i = 0; i < 10; i++) {
  10.                 count=count++;//count=++count;
  11.         }
  12.         System.out.println(count);
  13. }
  14. }
复制代码

作者: 月影千华    时间: 2015-9-12 14:00
本帖最后由 月影千华 于 2015-9-12 14:04 编辑

你可以这样理解count=count++;
这时(count++)==0   count==1,然后又把count++的值赋给count了,所以count会一直是0
count=++count;
这时(++count)==1 count==1然后又把++count的值赋给count了,所以循环一次count值是1,再循环,就朝上继续加1
那么问题来了,少年
如果上面写成count=(count++)+(++count);
你说结果是多少……

作者: 大木木    时间: 2015-9-12 14:55
count=(count++)+(++count)应该是先把右边都进行运算之后再赋值吧。如果count初始值是0,那结果九应该是2咯
作者: yanmingwang    时间: 2015-9-12 16:33
楼主首先得理解count++,与++count的区别。

举例说明、令i=0;    i=i++;  此时,i=0;即先赋值,后运算。故其结果总是0;

若是i=++i;此时  i=1;即先运算,后赋值。下一步 i=++i; 此时 i=2;依次类推,相当于每次加一;
作者: hhuxiaolang    时间: 2015-9-12 21:13
x++的运算机制是 先以x计算表达式的值,第二步x自增1,最后把表达式的值赋给左边
作者: kingxiao    时间: 2015-9-12 21:23
第一个每次都加1,第二个都是假0
作者: anyway1919    时间: 2015-9-12 22:08
月影千华 发表于 2015-9-12 14:00
你可以这样理解count=count++;
这时(count++)==0   count==1,然后又把count++的值赋给count了,所以count会 ...

谢谢,感觉我前面的知识有遗忘了,还要多看多想啊
作者: LYfeeling    时间: 2015-9-12 22:10
前++和后++的问题
作者: anyway1919    时间: 2015-9-12 22:13
yanmingwang 发表于 2015-9-12 16:33
楼主首先得理解count++,与++count的区别。

举例说明、令i=0;    i=i++;  此时,i=0;即先赋值,后运算。故 ...

谢谢,感觉基础都很扎实啊。请问你们是黑马哪个校区?
作者: anyway1919    时间: 2015-9-12 22:18
大木木 发表于 2015-9-12 14:55
count=(count++)+(++count)应该是先把右边都进行运算之后再赋值吧。如果count初始值是0,那结果九应该是2咯 ...

你好,我想问一下,你说的结果是2,在运算的时候是1+1的结果还是0+2的结果???
作者: Hi不言而喻    时间: 2015-9-12 22:21
找老师
作者: 大木木    时间: 2015-9-14 20:37
anyway1919 发表于 2015-9-12 22:18
你好,我想问一下,你说的结果是2,在运算的时候是1+1的结果还是0+2的结果??? ...

我猜。。。是1+1

前面的(count++)是先赋值后运算,而后面的(++count)是先运算后赋值,虽然前者没先运算,但因为后者是先进行了运算,所以在他们之和赋值之前count的值是1,这时候虽然前者没先运算,但它在赋值时应该也是1,所以运算应该是 1+1,这里面涉及到那些区啊,内存的存储规则,我也不是很懂,所以不敢肯定
底层运算的这些去问问老师或比较妥妥,我不好下定论
作者: a80C51    时间: 2015-9-14 21:23
这个是一道经典的自增运算,学习了。。。




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