第四章——选择结构 第五节——if语句及其拓展

第四章——选择结构 第五节——if语句及其拓展

亓翎_Re-Tikara Lv5

1. 什么是if语句?

  简单来说,if语句就是程序里的“判断开关”。你可以把它想象成生活中的选择题:

  • 如果某个条件成立(比如“你成绩优秀”),执行某个操作(比如“发奖学金”)。
  • 如果条件不成立(比如“成绩不及格”),执行另一个操作(比如“补考”)。

  在C语言里,if语句就是用来让程序根据条件决定“下一步该干嘛”的。


2. 最基础的if语句

语法:

1
2
3
if (条件) {
// 条件成立时执行的代码
}

举个栗子🌰:

1
2
3
4
int age = 18;
if (age >= 18) {
printf("你可以投票了!\n");
}
  • 如果age大于等于18,就输出“你可以投票了!”;否则,啥也不干。

注意⚠️:

  • 条件写在()里,结果为“真”(非0)或“假”(0)。
  • 如果只有一行代码,可以省略大括号{},但建议还是加上,避免出错。

3. 加上else的“二选一”

  有时候需要“如果A成立,做X;否则,做Y”。这时候就要用if-else

1
2
3
4
5
if (条件) {
// 条件成立时执行
} else {
// 条件不成立时执行
}

例子:

1
2
3
4
5
6
int score = 85;
if (score >= 60) {
printf("恭喜及格!\n");
} else {
printf("需要补考哦。\n");
}
  • 如果score大于等于60,输出“恭喜及格!”;否则输出“需要补考哦。”

注意⚠️:

  • else必须和最近的if配对。如果嵌套太深,容易出错,建议用大括号明确结构。

4. 多条件分支:else if的“多选一”

  当有多个条件需要判断时,可以用else if

1
2
3
4
5
6
7
if (条件1) {
// 条件1成立时执行
} else if (条件2) {
// 条件2成立时执行
} else {
// 所有条件都不成立时执行
}

例子:

1
2
3
4
5
6
7
8
9
10
int grade = 85;
if (grade >= 90) {
printf("A\n");
} else if (grade >= 80) {
printf("B\n");
} else if (grade >= 70) {
printf("C\n");
} else {
printf("D\n");
}
  • 程序会从上到下判断,一旦某个条件成立,后面的条件就不再检查。

5. 嵌套if:条件里的条件

  有时候需要“条件里的条件”,比如:

1
2
3
4
5
6
7
8
9
if (天气晴朗) {
if (有空) {
去爬山;
} else {
看电影;
}
} else {
看书;
}

  在C语言中,嵌套if的写法是:

1
2
3
4
5
6
7
8
9
if (外层条件) {
if (内层条件) {
// 内层条件成立时执行
} else {
// 内层条件不成立时执行
}
} else {
// 外层条件不成立时执行
}

例子:

1
2
3
4
5
6
7
8
9
10
int age = 20, hasLicense = 1;
if (age >= 18) {
if (hasLicense == 1) {
printf("你可以开车。\n");
} else {
printf("你需要考驾照。\n");
}
} else {
printf("你还未成年。\n");
}

6. 常见坑与避坑指南

  1. 条件判断的“真假”规则

    • C语言中,0是假,非0是真
    • 例如:if (x)等价于if (x != 0)
  2. 别把===搞混

    • =是赋值,==才是判断相等。
    • 错误示例:
      1
      if (x = 5) { ... }  // 实际是给x赋值5,条件永远为真!
  3. else匹配最近的if

    • 如果没有大括号,else会和最近的if配对,可能导致逻辑错误。
    • 建议: 用大括号明确代码块。
      1
      2
      3
      4
      5
      if (a)
      if (b)
      doSomething();
      else
      doOther(); // 这个else其实是和上面的if(b)配对!
  4. 逻辑运算符的优先级

    • &&(与)优先级高于||(或),但低于比较运算符(如><)。
    • 建议用括号明确优先级:
      1
      if ((a > 5) && (b < 10)) { ... }
  5. 短路现象

    • &&||有“短路”特性:
      • a && b:如果a为假,b不会被计算。
      • a || b:如果a为真,b不会被计算。
    • 例子:
      1
      if (ptr != NULL && ptr->value > 0) { ... }  // 避免空指针访问

7. 总结:if语句的核心思想

  • 选择结构:程序根据条件动态决定执行路径。
  • 灵活组合:通过ifelse ifelse、嵌套if,可以处理复杂的逻辑。
  • 注意事项
    • 条件判断的真假规则(0是假,非0是真)。
    • 使用大括号明确代码块,避免歧义。
    • 注意运算符优先级,避免逻辑错误。

8.补充:关于条件

  1. if后面圆括号中的表达式,可以是任意合法的C语言表达式,了可以是任意类型的数据。
  2. 无论是否有else子句,if子句中如果只有一条语句,则此语句后的分号不能省略。


9.补充:关于执行条件

  首先计算紧跟在if后面一对圆括号内表达式的值。如果表达式值非零,则执行if子句,然后跳过else子句,去执行if语句后的下一条语句;如果表达式的值为零,则跳过if子句,去执行else子句,接着去执行if语句后的下一条语句。

  • 标题: 第四章——选择结构 第五节——if语句及其拓展
  • 作者: 亓翎_Re-Tikara
  • 创建于 : 2026-02-07 02:21:28
  • 更新于 : 2026-02-10 02:48:46
  • 链接: https://re-tikara.fun/Blog/posts/3281fff4/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。