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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

谢哥哥

中级黑马

  • 黑马币:36

  • 帖子:28

  • 精华:0

© 谢哥哥 中级黑马   /  2016-7-11 23:47  /  1190 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

大家好,萌新有个小小问题
for语句中
for(判断语句a;判断语句b;判断语句c){}
b和c的执行次数,我觉得是d 和C的次数有可能是一样的
就是当abc都是空的时候,他们的执行次数一样
可是这个练习题的答案是b永远比c多一次
请教各位,我的见解是否是对的?

9 个回复

倒序浏览
我觉得假如中间的判断语句为空,也会执行一次默认的判断....
回复 使用道具 举报
for(初始化表达式;条件表达式;循环后的操作表达式) {
                        循环体;
                }
执行流程:
        * a:执行初始化语句
        * b:执行判断条件语句,看其返回值是true还是false
                * 如果是true,就继续执行
                * 如果是false,就结束循环
        * c:执行循环体语句;
        * d:执行循环后的操作表达式
        * e:回到b继续。

从这里面可以看出只有条件表达式满足才会执行循环体语句和循环后的操作表达式,所以比它多一次
回复 使用道具 举报
cat73 黑马帝 2016-7-12 00:49:21
板凳
本帖最后由 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
复制代码


回复 使用道具 举报
cat73 发表于 2016-7-12 00:49
for 其实是个语法糖,它可以展开成这样:

不懂,带上goto的用处
回复 使用道具 举报
cat73 发表于 2016-7-12 00:49
for 其实是个语法糖,它可以展开成这样:

不懂,带上goto的用处
回复 使用道具 举报
学无止境~~~~~~~~~~
回复 使用道具 举报
b比c永远多执行一次,因为b是判断条件,c是b判断完之后才会执行。
回复 使用道具 举报
谢谢,大家,我懂了
回复 使用道具 举报
我觉得假如中间的判断语句为空,也会执行一次默认的判断....
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马