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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lwy_ofb 中级黑马   /  2016-3-7 18:41  /  811 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

执行下面代码,i的输出结果是( )
   public static void main(String[] args) {
      int i = 3;
      for(int j = 0; j < 5;j++){
         i = i++;
      }
      System.out.println(i);

}

14 个回复

倒序浏览
直接放在eclipse上运行以下不就行了吗
回复 使用道具 举报
i<5之后,直接执行i=i++,一轮后i加了一,,,答案8
回复 使用道具 举报
j从0开始到4,应该是循环5次,i之后输出为8
回复 使用道具 举报
i=3     注意这一句:   i = i++;
回复 使用道具 举报
88888888888888888888888
回复 使用道具 举报
本帖最后由 sl943508135 于 2016-3-7 21:32 编辑

答案是3 等号后面的i先赋值给等号前面的i 再做自加运算
回复 使用道具 举报
i=3;原因是,/*
j=0,0<5,true,i=4,i=3,j=1
j=1,1<5,true,i=4,i=3,j=2
j=2,2<5,true,i=4,i=3,j=3
j=3,3<5,truei=4,i=3,j=4
j=4,4<5,truei=4,i=3,,j=5
j=5,5<5,false
*/
后++参与运算的步骤是:
1,自身先+1
2.把加一前的值进行运算
回复 使用道具 举报

根本原因是,++运算的优先级高于赋值运算的级别,先执行++,再执行赋值.
把第一次++的值覆盖掉了
回复 使用道具 举报
首先,这种写法是相当蛋疼的写法,开发时候千万别这样写。
i = i++;        
i = 0; i = i++  其实就是i自己和自己玩,永远都是先把0赋给自己。。轮不上i++...

注意:

i = i++和  i+=1是不一样的。
i= i++和
i = i ;
i++也是不一样的
回复 使用道具 举报 1 0
答案应该还是3吧
回复 使用道具 举报
大神快过来做吧
回复 使用道具 举报
3,老师讲过
回复 使用道具 举报
运行结果是3
回复 使用道具 举报
输出当然是为3,i = i++;的操作可能相当于以下三步操作:①把变量i的值取出来,放在一个临时变量里(我们先记作temp);②把变量i的值进行自加操作;③把临时变量temp的值作为自增运算前i的值使用,在本题中就是给变量i赋值。因此,经过以上三步操作以后,虽然变量i在第②步操作中进行了自增运算,但第三步操作以后又把原来的值赋给了它
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马