黑马程序员技术交流社区

标题: 请大神指点下这个程序的运行结果为什么是101? [打印本页]

作者: zxy5853    时间: 2016-4-6 13:00
标题: 请大神指点下这个程序的运行结果为什么是101?
int i = 100;
while(true)
{
   if (i++ >100)
   {
      break;
   }
System.out.println(i);
}
运行结果是101,这是为什么呢?一直没搞明白,请大神指点!


作者: a9623a    时间: 2016-4-6 16:25
当i = 100 时,执行if (i++ >100)  先判断 i > 100 然后再 i=i+1
作者: zxy5853    时间: 2016-4-6 22:12
a9623a 发表于 2016-4-6 16:25
当i = 100 时,执行if (i++ >100)  先判断 i > 100 然后再 i=i+1

谢谢,差不多明白了
作者: zapple926    时间: 2016-4-6 22:34
i++会自增啊,放在后面会先运算,再自增.
作者: wy123580    时间: 2016-4-6 22:40
I++先用后加,i++>100为false,但是下面输出是i已经变为101,第二次循环时i++>100成立,break退出循环
作者: 追梦de蜗牛2016    时间: 2016-4-8 16:53
"i++ >100"
这个代码相当于
i >100 ; i = i + 1;
如果想得到100,可以改成"++i > 100;"
作者: yy0328    时间: 2016-4-8 17:57
先比较  再自增
作者: zxy5853    时间: 2016-4-9 20:41
wy123580 发表于 2016-4-6 22:40
I++先用后加,i++>100为false,但是下面输出是i已经变为101,第二次循环时i++>100成立,break退出循环 ...

谢谢,一开始没弄明白i++什么时候参与的运算
作者: zxy5853    时间: 2016-4-9 20:44
追梦de蜗牛2016 发表于 2016-4-8 16:53
"i++ >100"
这个代码相当于
i >100 ; i = i + 1;

++i的话,i不是先变成101,再参与判断吗,那岂不是直接break跳出循环了吗,根本就没有输出100的机会了啊
作者: zxy5853    时间: 2016-4-10 11:45
zapple926 发表于 2016-4-6 22:34
i++会自增啊,放在后面会先运算,再自增.

谢谢,有点明白了{:2_32:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2