C 判断语句
C 语言 - 决策(条件判断)
Section titled “C 语言 - 决策(条件判断)”决策(Decision Making)允许程序根据特定条件是真(true)还是假(false)来执行不同的代码块。这使得程序能够根据不同的输入或情况做出动态反应。
核心思想是评估一个条件(一个表达式),并根据结果选择执行路径。如果条件为真,则执行一组语句;如果为假,则可能执行另一组语句(或不执行任何语句)。
C 语言中的真假性
Section titled “C 语言中的真假性”与一些具有专门布尔类型的语言不同,C 语言传统上使用整数来表示条件表达式中的真和假:
- 假 (False): 整数值
0被认为是假的。 - 真 (True): 任何非零的整数值(正数或负数)都被认为是真的。
关系运算符(<, >, <=, >=)和相等运算符(==, !=)的结果是 1(真)或 0(假)。逻辑运算符(&&, ||, !)也使用这些基于整数的真/假值。
自 C99 标准以来,C 语言包含了 <stdbool.h> 头文件,它定义了:
- 一个
bool类型(通常是_Bool的别名)。 - 常量
true(通常展开为1)和false(通常展开为0)。
使用 <stdbool.h> 可以使代码更清晰易读,但基本原理(0 为假,非零为真)仍然是基础。
C 语言提供了以下决策语句:
| 语句 | 描述 |
|---|---|
if 语句 | 仅在指定条件评估为真(非零)时执行一个代码块。 |
if...else 语句 | 如果条件为真,则执行一个代码块;如果条件为假(零),则执行另一个不同的代码块。 |
nested if 语句(嵌套 if) | 一个 if 或 else 块可以包含另一个 if 或 if...else 语句,从而实现更复杂的逻辑分支。 |
if...else if...else 梯形结构 | 使用嵌套 if 语句的一种常见模式,用于按顺序测试一系列条件。执行与第一个为真条件关联的代码块。 |
switch 语句 | 允许将一个变量与一系列常量整数或字符值(case)进行比较测试。对于特定的相等性检查,它提供了一种替代冗长 if...else if 梯形结构的有效方法。 |
nested switch 语句(嵌套 switch) | 一个 switch 语句内的 case 或 default 块可以包含另一个 switch 语句。 |
三元条件运算符(? :)
Section titled “三元条件运算符(? :)”C 语言还提供了一种使用三元运算符 ? : 的简写条件表达式。它常用于简单的条件赋值或表达式。
condition ? expression_if_true : expression_if_false;- 首先评估
condition。 - 如果
condition为真(非零),则评估expression_if_true,其值成为整个三元表达式的结果。 - 如果
condition为假(零),则评估expression_if_false,其值成为整个三元表达式的结果。
示例:
#include <stdio.h>#include <stdlib.h> // For EXIT_SUCCESS// 包含标准库头文件,用于 EXIT_SUCCESS
int main(void) { int a = 10, b = 20; int max_val;
// Use ternary operator to find the maximum value // 使用三元运算符查找最大值 max_val = (a > b) ? a : b;
printf("Maximum value is: %d\n", max_val);
return EXIT_SUCCESS;}这等效于:
if (a > b) { max_val = a;} else { max_val = b;}虽然简洁,但过度使用复杂或嵌套的三元运算符可能会降低代码的可读性,不如标准的 if...else 语句清晰。