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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class Test
{
        public static void main(String[] args)
        {
                int i= 0;
                while(i++<10);
                System.out.println("i="+i);
        }
}
    运行结果是i=11 .
    想不明白呀
    算起来不是应该是  i=10的时候 条件就不满足了呀
    怎么会等于11呢

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

11 个回复

正序浏览
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);
         }
}


回复 使用道具 举报
while(i++<10);无论如何这条判断语句是执行了,所以当i=10是判断不成立,表示循环结束了,可是i还是会自加一次
回复 使用道具 举报
++的运算级别比<的级别高,i++是先执行再自加。当i=10时,不满足条件跳出循环,再进行自加
回复 使用道具 举报
i++是先赋值再自加的 . 换成++i 就好了
回复 使用道具 举报
你的输出语句也没再循环内啊
回复 使用道具 举报
高铭 中级黑马 2012-4-15 20:12:27
7#
当i=10的时候 条件不满足 但是程序并没有停止
还需要向下运行 i++   就是 10++   就会是11了   
改成++i    i 就会等于10 了
回复 使用道具 举报
  while(i++<10);
i++ :首先使用i原值,在执行i加一,最后一次循环i = 10时不小于10 但要i 加一要执行一次,所以最后是11了。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
很简单,因为你把i++<10作为循环条件了,即使i=10的时候,也会执行i++操作。
i++是先进行其他操作再加1,++i是先加1再执行其他操作,你换成++i试试

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
当i=10的时候,while不满足,跳出。这时i为10。
但是读到i++的时候又自加了一次,所以输出为11。
你可以把输出语句放到循环里,结果又不一样。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
while(i++<10);
先判断 i 是否小于十,如果不成立还会在加一次。
如果改成++i,结果就是10了。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
最后一次循环判断是当i为10时,此时i++ <10不再成立,while循环退出,最后打印i++后的值,也就是11

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马