黑马程序员技术交流社区

标题: 不要用编译器运行代码,看看结果是多少 [打印本页]

作者: 吴光新    时间: 2013-8-3 14:33
标题: 不要用编译器运行代码,看看结果是多少
本帖最后由 Jiewin 于 2013-8-3 14:37 编辑

  1. int i = 0;
  2. while(true){
  3.         if(i++>10)
  4.                 break;
  5. }
  6. System.out.println(i);
复制代码

  1. int i = 0;
  2. while(true){
  3.         if(i++>10)
  4.                 break;
  5.         System.out.println(i);
  6. }
复制代码
请问两个代码最后输出的那个i是多少?

作者: 黄兴旺    时间: 2013-8-3 14:45
....来看看
作者: 黄兴旺    时间: 2013-8-3 14:49
第二个比较容易感觉..1~11  第一个..请指教
作者: 吴光新    时间: 2013-8-3 15:31
本帖最后由 Jiewin 于 2013-8-3 15:35 编辑
黄兴旺 发表于 2013-8-3 14:49
第二个比较容易感觉..1~11  第一个..请指教


其实这里考的是++这个运算符,弄懂了就好理解了
就是问 i自增后才与10比较还是比较后才自增,呵呵!!
这里是比较后才自增,那么当11>10后跳出循环了,但同时也自增了,所以是12
作者: 黄兴旺    时间: 2013-8-3 18:10
Jiewin 发表于 2013-8-3 15:31
其实这里考的是++这个运算符,弄懂了就好理解了
就是问 i自增后才与10比较还是比较后才自增,呵呵!!
这 ...

哦哦 呵呵
作者: 秦兰之    时间: 2013-8-4 10:41
测了之后发现错得离谱,我猜的是居然是11和0?
作者: 夜写意    时间: 2013-8-4 14:31
本帖最后由 夜写意 于 2013-8-4 15:16 编辑

刚才快速回复搞的,还没打完就发表了。后来才知道还可以重新编辑。
作者: Kid1412    时间: 2013-8-4 14:35
第一个打印12,第二个,打印1-11
作者: 吴光新    时间: 2013-8-4 14:40
秦兰之 发表于 2013-8-4 10:41
测了之后发现错得离谱,我猜的是居然是11和0?

越简单的问题我们就越容易犯错,呵呵
作者: 夜写意    时间: 2013-8-4 14:40
第一个是:12.因为i=11的时候,i与10比较满足if的条件,然后执行i++,最后跳出while循环,此时i的值为12.
第二个是:11.因为当i=10的时候,通过比较,没有满足条件,i++使其值增1等于11,然后打印。但是当i=11的时候,并没有打印就跳出了while循环,所以最后一次打印的是11.




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