黑马程序员技术交流社区
标题:
面试题~求大神
[打印本页]
作者:
lwy_ofb
时间:
2016-3-7 18:41
标题:
面试题~求大神
执行下面代码,i的输出结果是( )
public static void main(String[] args) {
int i = 3;
for(int j = 0; j < 5;j++){
i = i++;
}
System.out.println(i);
}
作者:
Do、
时间:
2016-3-7 19:09
直接放在eclipse上运行以下不就行了吗
作者:
cnm19921016
时间:
2016-3-7 19:57
i<5之后,直接执行i=i++,一轮后i加了一,,,答案8
作者:
365708064
时间:
2016-3-7 21:04
j从0开始到4,应该是循环5次,i之后输出为8
作者:
妖精的旋律
时间:
2016-3-7 21:14
i=3 注意这一句: i = i++;
作者:
a8256003
时间:
2016-3-7 21:15
88888888888888888888888
作者:
sl943508135
时间:
2016-3-7 21:25
本帖最后由 sl943508135 于 2016-3-7 21:32 编辑
答案是3 等号后面的i先赋值给等号前面的i 再做自加运算
作者:
奋飞的小模糊
时间:
2016-3-7 22:02
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.把加一前的值进行运算
作者:
奋飞的小模糊
时间:
2016-3-7 22:07
奋飞的小模糊 发表于 2016-3-7 22:02
i=3;原因是,/*
j=0,0
根本原因是,++运算的优先级高于赋值运算的级别,先执行++,再执行赋值.
把第一次++的值覆盖掉了
作者:
Vincent饭饭
时间:
2016-3-7 22:28
首先,这种写法是相当蛋疼的写法,开发时候千万别这样写。
i = i++;
i = 0; i = i++ 其实就是i自己和自己玩,永远都是先把0赋给自己。。轮不上i++...
注意:
i = i++和 i+=1是不一样的。
i= i++和
i = i ;
i++也是不一样的
作者:
zk342577507
时间:
2016-3-7 23:35
答案应该还是3吧
作者:
boboyuwu
时间:
2016-3-8 19:58
大神快过来做吧
作者:
15856681986
时间:
2016-3-8 20:05
3,老师讲过
作者:
xanx14710
时间:
2016-3-8 20:09
运行结果是3
作者:
luomoss
时间:
2016-3-8 21:00
输出当然是为3,i = i++;的操作可能相当于以下三步操作:①把变量i的值取出来,放在一个临时变量里(我们先记作temp);②把变量i的值进行自加操作;③把临时变量temp的值作为自增运算前i的值使用,在本题中就是给变量i赋值。因此,经过以上三步操作以后,虽然变量i在第②步操作中进行了自增运算,但第三步操作以后又把原来的值赋给了它
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2