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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


下面程序执行的结果是?()
int i = 100;
while(true)
{
        if (i++ > 100)
        {
                break;
        }
System.out.println(i);
}
A.  100
B.  101
C.  102
D.  报错
这道题不理解为什么是选B?

5 个回复

倒序浏览
while()括号中是true,那么不论外界条件如何总能进入循环,进入循环之后判断if()中的条件,if(i++>100),++在i后面.i先参与判断,再自加.于是if先判断为false,然后执行i++;此时i=101,执行System输出语句,然后i=101;再进入一次循环.这是if判断为true,遇到break.
重点是System输出语句在while循环里面.
回复 使用道具 举报 1 0
i先与 100比较再自增.所以选B
回复 使用道具 举报
因为i++是前置自增赋值运算符,如果变量名在前原来的数值先参与运算,然后再自增+1,所以结果就是101
回复 使用道具 举报
"++"为自增符号,
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;
回复 使用道具 举报
我觉得是报错!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马