黑马程序员技术交流社区
标题:
不理解这道题,望指点
[打印本页]
作者:
唱情歌的神父
时间:
2016-7-1 23:14
标题:
不理解这道题,望指点
下面程序执行的结果是?()
int i = 100;
while(true)
{
if (i++ > 100)
{
break;
}
System.out.println(i);
}
A. 100
B. 101
C. 102
D. 报错
这道题不理解为什么是选B?
作者:
yaozhilin
时间:
2016-7-1 23:33
while()括号中是true,那么不论外界条件如何总能进入循环,进入循环之后判断if()中的条件,if(i++>100),++在i后面.i先参与判断,再自加.于是if先判断为false,然后执行i++;此时i=101,执行System输出语句,然后i=101;再进入一次循环.这是if判断为true,遇到break.
重点是System输出语句在while循环里面.
作者:
caicc
时间:
2016-7-1 23:41
i先与 100比较再自增.所以选B
作者:
夏:默秋凉
时间:
2016-7-1 23:53
因为i++是前置自增赋值运算符,如果变量名在前原来的数值先参与运算,然后再自增+1,所以结果就是101
作者:
bucky
时间:
2016-7-2 00:09
"++"为自增符号,
1)自增符号在前,即++i,则先进行自增1再运算,例如,int i = 100; ++i;则i先自增到101,然后进行运算;
2)自增符号在后,即I++,则先进行运算,后记得再自身增加1;例如,int i = 100; i++;则i先运算,结束后i在自增;
你的这道题,是符合第2种情况,i = 100;先运算,if ((i =) 100 > 100)→false→跳出while循环,后面没有运算符号了,只有输出,此时i结束运算,进行自增1,最后输出i,即101;
作者:
caesar_QMwS4
时间:
2016-7-2 11:28
我觉得是报错!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2