黑马程序员技术交流社区

标题: 不理解这道题,望指点 [打印本页]

作者: 唱情歌的神父    时间: 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