黑马程序员技术交流社区

标题: 复习做题时碰到一个很简单的题目,有点不明白。。 [打印本页]

作者: 王小刚    时间: 2012-4-15 19:38
标题: 复习做题时碰到一个很简单的题目,有点不明白。。
class Test
{
        public static void main(String[] args)
        {
                int i= 0;
                while(i++<10);
                System.out.println("i="+i);
        }
}
    运行结果是i=11 .
    想不明白呀
    算起来不是应该是  i=10的时候 条件就不满足了呀
    怎么会等于11呢
作者: 尹博    时间: 2012-4-15 19:47
最后一次循环判断是当i为10时,此时i++ <10不再成立,while循环退出,最后打印i++后的值,也就是11
作者: 王永旺    时间: 2012-4-15 19:54
while(i++<10);
先判断 i 是否小于十,如果不成立还会在加一次。
如果改成++i,结果就是10了。
作者: 马强    时间: 2012-4-15 19:56
当i=10的时候,while不满足,跳出。这时i为10。
但是读到i++的时候又自加了一次,所以输出为11。
你可以把输出语句放到循环里,结果又不一样。
作者: 蒋亮    时间: 2012-4-15 19:57
很简单,因为你把i++<10作为循环条件了,即使i=10的时候,也会执行i++操作。
i++是先进行其他操作再加1,++i是先加1再执行其他操作,你换成++i试试
作者: 余耀明    时间: 2012-4-15 20:04
  while(i++<10);
i++ :首先使用i原值,在执行i加一,最后一次循环i = 10时不小于10 但要i 加一要执行一次,所以最后是11了。

作者: 高铭    时间: 2012-4-15 20:12
当i=10的时候 条件不满足 但是程序并没有停止
还需要向下运行 i++   就是 10++   就会是11了   
改成++i    i 就会等于10 了
作者: 吴玉辉    时间: 2012-4-15 20:25
你的输出语句也没再循环内啊
作者: 孙宇晨    时间: 2012-4-15 21:13
i++是先赋值再自加的 . 换成++i 就好了
作者: 陈坚    时间: 2012-4-15 21:58
++的运算级别比<的级别高,i++是先执行再自加。当i=10时,不满足条件跳出循环,再进行自加
作者: 魏明明    时间: 2012-4-15 23:07
while(i++<10);无论如何这条判断语句是执行了,所以当i=10是判断不成立,表示循环结束了,可是i还是会自加一次
作者: liuyang    时间: 2012-4-15 23:31
while(i++<10);
System.out.println("i="+i);
你把输出语句放在了循环外边了,当10不满足时也执行了++,所以就是11,你说的那种情况是把输出放在循环里面,当10不满足时就不会输出了
class Test
{
         public static void main(String[] args)
        {
                 int i= 0;
                 while(i++<10)
                 System.out.println("i="+i);
         }
}







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