《C 语言 if-else 和循环:那些老师没讲透的细节》

发布时间:2026/9/29 11:45:28
《C 语言 if-else 和循环:那些老师没讲透的细节》 你有没有遇到过这种情况代码写得看着没问题一运行结果就不对调试半天最后发现是 else 跟错了 if…… 今天就把 C 语言分支和循环里最容易踩的 4 个坑一次性讲清楚。一、else 到底跟谁—— 就近原则就近原则 → “else 就像个找搭档的人谁离它最近就跟谁走”如int main(){int a 0;int b 0;scanf(“%d %d”, a, b);if (a 1)if (b 2)printf(“hehe\n”);elseprintf(“haha\n”);return 0;}这段代码的输出图一输入1 2图二输入1 3很明显这个else与第二个if搭配在一起这时如果想让else与第一个if在一起就需要把第二个if套起来如图这时候else与第一个if连用b2时依旧打印haha)**二、if 只管 “一句话”—— 大括号的重要性如int main(){int score 0;scanf(“%d”, score);if (score 60)printf(“拿捏拿捏\n”);printf(“庆祝一下\n”);return 0;}*很明显无论score是多少都会输出庆祝一下由此得出if和else只控制一句同上如果想要两句话都控制加{}即可三、算到一半就不算了—— 短路求值由于左边的式子为’假‘使得右边的式子不求值短路求值 → “就像你查成绩第一科就挂了后面几科不用看也知道总评过不了”首先需要了解前置和后置的区别如果为a则式子先读取a本身的值然后再使得aa1那么a就是先让a自身加1后再读取a的值三个操作符为取反为并且||为或者当ab时 a,b只要有一个为’假‘则整个式子都假而当a||b时 a,b有一个为’真‘即可那么下列代码可解释短路求值int main()//测试短路求值{int i 0, a 0, b 2, c 3, d 4;i a b d;printf(“a%d\n b%d\n c%d\n d%d\n”, a,b,c,d);return 0;}我们输出一下显而易见只有a自己加1 而其他值不变 正是因为a为’假’使得式子都是‘假’相同原理 如果是a 则所有值都会发生变化***四、break 和 continue一个退学一个休学break vs continue → “break 是直接退学continue 是这学期挂了但下学期接着读”这里只拿一个简单的for循环来举例int main(){int i 0;for (i 1;i 10;i) {if (i 5)continue;printf(%d , i);}return 0;}***这是一个简单的输出1-10的数字 中间在5的时候添加continue 此刻输出只是在5处出现了作用而把continue换break 即int main(){int i 0;for (i 1;i 10;i) {if (i 5)break;printf(%d , i);}return 0;}输出为很明显这个break直接在5处进行了终止作用于该处和往后的所有 这样两者区别就显而易见了。总结一下else 找最近的 if、if 只管一句记得加 {}、 和 || 会偷懒、break 直接走 continue 跳过本次。下次写代码多留意这几点bug 少一半

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询