当前位置: 首页 > news >正文

C语言入门笔记(四):if、switch、逻辑运算——程序的分岔路口

引入

引入

大家好,我是尉迟洛林。这是C语言入门笔记的第四篇。

上一篇我们总结了C语言中常用的操作符,知道了怎么用+-=这些符号做运算和赋值。

但是,程序不可能永远“一根筋”地往下跑。更多时候,我们需要程序学会“做判断”——

  • “如果今天是周末,就睡个懒觉;否则就早起上班。”
  • “根据考试分数,判断是优秀、及格还是不及格。”

这种“判断”和“选择”的能力,在C语言里就靠分支与循环来实现。而在学分支之前,我们需要先认识两个重要的“裁判”:关系操作符逻辑操作符

这篇笔记信息量不小,让我们一起开始吧。

正文

1 关系操作符

C语言用于比较的表达式,称为“关系表达式”

  1. >大于运算符
  2. <小于运算符
  3. >=大于等于操作符
  4. <=小于等于操作符
  5. ==相等运算符
  6. !=不相等运算符

关系表达式通常返回0 或1,表⽰真假。C语⾔中,0表⽰假,所有⾮零值表⽰真。⽐如,20 > 12 返回1,关系表达式常⽤于if或while 结构。

2 逻辑操作符 && ,||, !

&&并且(都为真,则为真,反之为假)
|| 或者(至少有一个表达式为真,则为真,反正为假)
!取反或取非(改变单位表达式的真假)

注:C语⾔中,⾮0表⽰真,0表⽰假

2.1 逻辑取反运算符:!

#include<stdio.h>intmain(){intflag=0;if(!flag){printf("do something\n");}return0;}

如果flag 为真,!flag 就是假,如果flag 为假,!flag 就是真所以上⾯的代码的意思就是flag 为假,执⾏if语句中的代码。

2.2 逻辑与运算符: &&

&&就是与运算符,也是并且的意思,&&是⼀个双⽬操作符,使⽤的⽅式是a&&b, && 两边的表达
式都是真的时候,整个表达式才为真,只要有⼀个是假,则整个表达式为假

intmonth=0;scanf("%d",&month);if(month>=3&&month<=5)//只有两个表达式都为真才执行{printf("春季\n");}

2.3 逻辑或运算符:||

|| 就是或运算符,也就是或者的意思,|| 也是⼀个双⽬操作符,使⽤的⽅式是a || b ,||两边的表达式只要有⼀个是真,整个表达式就是真,两边的表达式都为假的时候,才为假。

intmonth=0;scanf("%d",&month);if(month==12||month==1||month==2)//有一个表达式为真,就执行{printf("冬季\n");}

2.4 短路

C语⾔逻辑运算符还有⼀个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是
保证的。

// 短路示例inta=0;if(a!=0&&++a==1){// 因为 a != 0 为假,&& 发生短路,++a 根本不会执行}printf("%d\n",a);// a 仍然是 0,没有被自增

如果左边的表达式满⾜逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。

3 if语句

3.1 语法形式

if(表达式)语句;

表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏。

3.2 else

if(表达式)语句1else语句2

当if为假时,就执行else的语句。

3.3分支中包含多条语句

默认在if 和else 语句中默认都只控制⼀条语句,我们可以用"{}"把我们的多条语句括起来。如:

#include<stdio.h>intmain(){intage=0;scanf("%d",&age);if(age<18){printf("未成年\n");printf("不可以早恋\n");}else//else 后使⽤{}控制多条语句这个块也叫:程序块,或者复合语句{printf("成年了\n");printf("可以谈恋爱\n");}return0;}

3.4 if嵌套

在if else 语句中,else 可以与另⼀个if 语句连⽤,构成多重判断。

#include<stdio.h>intmain(){intnum=0;scanf("%d",&num);if(num>0){if(num%2==0)//这个是嵌套在if语句中的,构成了嵌套的if语句。printf("偶数\n");elseprintf("奇数\n");}else{printf("⾮正数\n");}return0;}

3.5 悬空else问题

如果有多个if和else,可以记住这样⼀条规则,else总是跟最接近的if匹配。

为了防止这个问题,可以在写代码的时候注意大括号的使用,让代码的可读性更高。

4 条件操作符

条件操作符也叫三⽬操作符,需要接受三个操作数的,形式如下:

exp1?exp2:exp3

条件操作符的计算逻辑是:

如果 exp1 为真,则计算 exp2,exp2 的结果就是整个表达式的结果。

如果 exp1 为假,则计算 exp3,exp3 的结果就是整个表达式的结果。

5 swich语句

switch 语句是⼀种特殊形式的if…else 结构,⽤于判断条件有多个结果的情况。它把多重的else if 改成更易⽤、可读性更好的形式。

5.1 语法形式

switch(expression){casevalue1:statementcasevalue2:statement...default:statement}

上⾯代码中,根据表达式就执⾏expression 不同的值,执⾏相应的default 分⽀。如果找不到对应的值.case 分⽀。

注:
• switch 后的expression 必须是整型表达式
• case 后的值,必须是整形常量表达式

case 和后面的值之间最好加上空格,比如 case 1:,这样代码可读性更好。
每个 case 分支的代码执行完后,通常需要加上 break 来跳出 switch。但有时候故意不加,可以实现多个 case 共用同一段代码。

5.2 switch语句中的break

switch 语句也是实现分支效果的。只有在 switch 语句中使用break才能跳出 switch 语句。

如果某一个case语句的后面没有break语句,代码会继续往下执行,有可能执行其他case语句中的代码,直到遇到break或者整个switch语句结束。

所以,在 switch 语句中,break非常重要,它能实现真正的“多选一”分支效果。

当然,break也不是每个case后面都必须有,有时候我们故意不加,来实现多个case共用同一段代码。比如:

switch(month){case12:case1:case2:printf("冬季\n");break;case3:case4:case5:printf("春季\n");break;// ... 其他季节同理default:printf("输入错误\n");break;}

5.3 switch语句中的default

expression的值与所有case的值都不匹配时,程序就会执行default分支。

就像上面冬季的例子,如果用户输入了13,既不等于12、1、2,也不等于其他季节的case值,最终就会落到default分支,打印“输入错误”。

在 switch 语句中,casedefault没有严格的顺序要求,只要满足实际需求就行。不过我们通常把default放在最后处理,这样逻辑最清晰。

写在最后

感谢你读到这里。

这篇笔记的信息量比前几篇都大,但“分支与循环”确实是C语言从“计算器”变成“智能程序”的关键一步。我初学的时候,最容易被两件事搞晕:一是else到底和哪个if配对,二是switch里忘写break导致代码“一泻千里”。

不知道你有没有类似的困惑?

想和大家聊聊:

  • 悬空elseswitchbreak,你踩过哪些坑?
  • 对于“短路”这个特性,你有没有什么巧妙的用法或者记忆口诀?
  • 下一篇我们要进入“循环”了,你对forwhile有什么想提前了解的吗?

欢迎在评论区分享你的经验或疑问,每一条留言我都会认真看。如果这篇笔记对你有帮助,点个关注就是对我最大的鼓励。

我们下篇见!

http://www.jsqmd.com/news/1025248/

相关文章:

  • NGA论坛终极优化指南:20+功能一键开启,打造专属高效摸鱼体验
  • 2026天津实木门厂家排行推荐:5家合规生产企业实测对比 - 奔跑123
  • 2026年,济南性价比高的GEO优化系统,究竟哪家技术更胜一筹? - 速递信息
  • 有发票和无发票的翡翠,合肥回收价差到底有多大? - 奢侈品回收评测
  • 2026国内GEO公司十强榜单出炉!企业AI搜索优化选型必看 - 品牌测评鉴赏家
  • 2026年银川配电箱代理厂家选择指南:服务商深度解析 - 速递信息
  • Java 基础第四篇 | 循环结构:while、do-while、for
  • 如何在5分钟内为3D打印机构建一体化控制中心:MainsailOS实战指南
  • 合肥有闲置钻石的注意!新旧规矩更新,这些回收陷阱千万别中招 - 奢侈品回收评测
  • 用 .NET 和 AWS Lambda 创建GitHub 仓库问题通知Webhook
  • 2026 年 6 月长沙环境好民办高中盘点,避坑小校区 - 讲清楚了
  • 2026年6月哈尔滨搬家公司深度测评:小红帽搬家是真靠谱 - 幸福生活序曲
  • 2026 年 6 月长沙艺体特色高中测评,升学避坑指南 - 讲清楚了
  • 上海浦东新手小白/家长必看的成人跆拳道防身术 - 速递信息
  • 卖表别被坑!2026 杭州名表回收套路盘点,浪琴名匠、帝舵碧湾怎么卖价最高 - 奢侈品回收评测
  • Python-100-Days实战:从零构建企业级RESTful API架构深度指南
  • 台州黄岩塑料菜板定制完整流程|咨询沟通至成品出货分几步? - 速递信息
  • 拓宽职场多元发展空间,博为峰车载测试保障学员实现多赛道跃迁 - 速递信息
  • The 4th Universal Cup. Extra Stage 1: Xian(无 H)
  • 家中闲置包包配件齐全怎么溢价?2026深圳收的顶官方顶估价标准公开 - 奢侈品回收测评
  • Kiro:规范驱动开发的AI IDE,重构复杂系统交付范式
  • Flet框架终极指南:用Python构建跨平台应用的完整解决方案
  • 2026 年 6 月长沙权威背书高中测评,院士题名首选 - 讲清楚了
  • 2026 年 6 月长沙全封闭寄宿民办高中测评,住宿差的千万别选 - 讲清楚了
  • 解放双手的明日方舟智能助手:MAA如何彻底改变你的游戏体验
  • 客户口碑好的GEO优化公司怎么选?2026避坑指南|干货 - 品牌测评鉴赏家
  • 保研边缘人逆袭指南:从‘末流211’到东南软院,我的GPA、竞赛与面试全复盘
  • 【GoC游戏】五子棋
  • 北京地区SEO优化公司全景评测:从关键词排名到AI大模型信源引用的选型指南 - 速递信息
  • 2026 成都 AI 培训学校哪家好 , AI 培训机构十大综合排行榜,看过来 - 教育信息网