黑马程序员技术交流社区

标题: 关于for循环的问题 [打印本页]

作者: 谢哥哥    时间: 2016-7-11 23:47
标题: 关于for循环的问题
大家好,萌新有个小小问题
for语句中
for(判断语句a;判断语句b;判断语句c){}
b和c的执行次数,我觉得是d 和C的次数有可能是一样的
就是当abc都是空的时候,他们的执行次数一样
可是这个练习题的答案是b永远比c多一次
请教各位,我的见解是否是对的?
作者: yuxing    时间: 2016-7-11 23:55
我觉得假如中间的判断语句为空,也会执行一次默认的判断....
作者: 745661590    时间: 2016-7-12 00:04
for(初始化表达式;条件表达式;循环后的操作表达式) {
                        循环体;
                }
执行流程:
        * a:执行初始化语句
        * b:执行判断条件语句,看其返回值是true还是false
                * 如果是true,就继续执行
                * 如果是false,就结束循环
        * c:执行循环体语句;
        * d:执行循环后的操作表达式
        * e:回到b继续。

从这里面可以看出只有条件表达式满足才会执行循环体语句和循环后的操作表达式,所以比它多一次
作者: cat73    时间: 2016-7-12 00:49
本帖最后由 cat73 于 2016-7-12 00:52 编辑

for 其实是个语法糖,它可以展开成这样:

  1. for (int i = 1; i < 10; i++) {
  2.     xxx();
  3. }

  4. // 等同于下面的写法

  5. int i = 1;
  6. while (i < 10) {
  7.     xxx();
  8.     i++;
  9. }
复制代码

所以仔细想一下就知道了,A 只执行一次,B 比 C 的执行次数多一次。


===========

带上 goto 可以继续展开
  1. int i = 1;

  2. # start
  3. if (!(i < 10)) {
  4.     goto end;
  5. }

  6. xxx();
  7. i++;

  8. goto start;

  9. # end
复制代码



作者: 664941114    时间: 2016-7-12 18:24
cat73 发表于 2016-7-12 00:49
for 其实是个语法糖,它可以展开成这样:

不懂,带上goto的用处

作者: 664941114    时间: 2016-7-12 18:34
cat73 发表于 2016-7-12 00:49
for 其实是个语法糖,它可以展开成这样:

不懂,带上goto的用处

作者: 小熊猫2016    时间: 2016-7-12 23:01
学无止境~~~~~~~~~~
作者: lsp0523    时间: 2016-7-12 23:34
b比c永远多执行一次,因为b是判断条件,c是b判断完之后才会执行。
作者: 谢哥哥    时间: 2016-7-17 20:53
谢谢,大家,我懂了
作者: 胡哓甫    时间: 2016-7-17 21:27
我觉得假如中间的判断语句为空,也会执行一次默认的判断....




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