1.语句基础与真假值
C语言中的控制语句主要分为三类:
- 分支语句 (选择结构):
if,switch - 循环语句:
while,for,do while - 转向语句:
break,goto,continue,return
核心概念:C语言中的真假
C语言中,0 表示 假 ,非0 表示 真
2. 分支语句
2.1 if 语句
语法结构包括单分支、双分支 (else) 和多分支 (else if)。
经典坑点:悬空 else (Dangling else)
else总是和它离得 最近 的那个if匹配,而不是和缩进对齐的那个匹配
cpp
// 错误示范:你以为 else 是匹配第一个 if 的吗?
int a = 0;
int b = 2;
if(a == 1)
if(b == 2)
printf("hehe\n");
else
printf("haha\n");
// 实际结果:什么都不打印,因为 else 匹配的是 if(b==2),而 if(a==1) 为假根本没进内层。
2.2 switch 语句
用于处理多分支情况,语法结构如下:
switch(整型表达式):括号里必须是整型结果。case 整型常量表达式::必须是常量。- break 的重要性:
switch无法自动跳出,必须搭配break才能实现真正的分支,否则会"穿透"执行 - default 子句: 处理所有 case 都不匹配的情况,可以写在任何位置,但习惯放在最后
3. 循环语句
3.1 while 循环
先判断,后执行。如果条件一开始就不满足,一次都不执行。
3.2 for 循环 (最常用)
语法:for(初始化; 判断; 调整)
优点: 将循环的三个必要条件集中在一起,比 while 更不容易出错
3.3 do...while 循环
先执行,后判断。特点:循环体至少执行一次
break vs continue
break:永久终止 循环,直接跳出 。continue:终止本次 循环,跳过后面代码,直接进入下一次判断。
4. goto 语句
虽然理论上可以被循环替代,但在跳出深层嵌套循环时非常有用
cpp
for(...) {
for(...) {
if(disaster)
goto error; // 直接跳出两层循环
}
}
error:
// 处理错误