A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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. }
复制代码

12 个回复

倒序浏览
本帖最后由 月影千华 于 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);
你说结果是多少……
回复 使用道具 举报
count=(count++)+(++count)应该是先把右边都进行运算之后再赋值吧。如果count初始值是0,那结果九应该是2咯
回复 使用道具 举报
楼主首先得理解count++,与++count的区别。

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

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

谢谢,感觉我前面的知识有遗忘了,还要多看多想啊
回复 使用道具 举报
前++和后++的问题
回复 使用道具 举报
yanmingwang 发表于 2015-9-12 16:33
楼主首先得理解count++,与++count的区别。

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

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

你好,我想问一下,你说的结果是2,在运算的时候是1+1的结果还是0+2的结果???
回复 使用道具 举报
找老师
回复 使用道具 举报
anyway1919 发表于 2015-9-12 22:18
你好,我想问一下,你说的结果是2,在运算的时候是1+1的结果还是0+2的结果??? ...

我猜。。。是1+1

前面的(count++)是先赋值后运算,而后面的(++count)是先运算后赋值,虽然前者没先运算,但因为后者是先进行了运算,所以在他们之和赋值之前count的值是1,这时候虽然前者没先运算,但它在赋值时应该也是1,所以运算应该是 1+1,这里面涉及到那些区啊,内存的存储规则,我也不是很懂,所以不敢肯定
底层运算的这些去问问老师或比较妥妥,我不好下定论
回复 使用道具 举报
这个是一道经典的自增运算,学习了。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马