温柔且深情. 2023-09-21 17:49 采纳率: 0%
浏览 5
已结题

C++的循环一直学不懂

不明白它为什么要用for
for里面还可以套if else while吗?
学得真的很乱

  • 写回答

3条回答 默认 最新

  • 赵4老师 2023-09-21 18:00
    关注
    
    for (A;B;C) D;
    //等价于
    {
     A;
     while (1) {
      if (!(B)) break;
      D;
      C;
     }
    }
    
    
    不要使用
    while (条件)
    更不要使用
    while (组合条件)
    要使用
    while (1) {
     if (条件1) break;
     //...
     if (条件2) continue;
     //...
     if (条件3) return;
     //...
    }
    因为前两种写法在语言表达意思的层面上有二义性,只有第三种才忠实反映了程序流的实际情况。
    典型如:
    下面两段的语义都是当文件未结束时读字符
    while (!feof(f)) {
     a=fgetc(f);
     //...
     b=fgetc(f);//可能此时已经feof了!
     //...
    }
    而这样写就没有问题:
    while (1) {
     a=fgetc(f);
     if (feof(f)) break;
     //...
     b=fgetc(f);
     if (feof(f)) break;
     //...
    }
    类似的例子还可以举很多。
    
    
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月2日
  • 创建了问题 9月21日

悬赏问题

  • ¥20 wordpress如何限制ip访问频率
  • ¥15 自研小游戏,需要后台服务器存储用户数据关卡配置等数据
  • ¥15 请求解答odoo17外发加工某工序的实操方法
  • ¥20 IDEA ssm项目 跳转页面报错500
  • ¥20 系统直接进入应急模式了,请教一下,人要裂开了
  • ¥15 页面初次加载时,JS调用对象可以调用成功,但是一旦跳转到另一个页面,再跳转回来后这个对象就显示undefind了,调用也调用不了了,什么原因?
  • ¥15 来个厉害的程序开发的,安排点活给你做
  • ¥15 rexroth indramotion MTX micro系统轴耦合编程
  • ¥100 springboot2.7.x 整合 sharding 的问题
  • ¥15 如何通过命令行操作统信360安全浏览器?