- C 编程教程
- C - 首页
- C 语言基础
- C - 概述
- C - 特性
- C - 历史
- C - 环境设置
- C - 程序结构
- C - Hello World
- C - 编译过程
- C - 注释
- C - 词法单元
- C - 关键字
- C - 标识符
- C - 用户输入
- C - 基本语法
- C - 数据类型
- C - 变量
- C - 整数提升
- C - 类型转换
- C - 类型强制转换
- C - 布尔类型
- C 语言中的常量和字面量
- C - 常量
- C - 字面量
- C - 转义序列
- C - 格式说明符
- C 语言中的运算符
- C - 运算符
- C - 算术运算符
- C - 关系运算符
- C - 逻辑运算符
- C - 位运算符
- C - 赋值运算符
- C - 一元运算符
- C - 自增和自减运算符
- C - 三元运算符
- C - sizeof 运算符
- C - 运算符优先级
- C - 其他运算符
- C 语言中的决策
- C - 决策
- C - if 语句
- C - if...else 语句
- C - 嵌套 if 语句
- C - switch 语句
- C - 嵌套 switch 语句
- C 语言中的循环
- C - 循环
- C - while 循环
- C - for 循环
- C - do...while 循环
- C - 嵌套循环
- C - 无限循环
- C - break 语句
- C - continue 语句
- C - goto 语句
- C 语言中的函数
- C - 函数
- C - 主函数
- C - 按值传递函数
- C - 按引用传递函数
- C - 嵌套函数
- C - 可变参数函数
- C - 用户自定义函数
- C - 回调函数
- C - return 语句
- C - 递归
- C 语言中的作用域规则
- C - 作用域规则
- C - 静态变量
- C - 全局变量
- C 语言中的数组
- C - 数组
- C - 数组的特性
- C - 多维数组
- C - 将数组传递给函数
- C - 从函数返回数组
- C - 可变长数组
- C 语言中的指针
- C - 指针
- C - 指针和数组
- C - 指针的应用
- C - 指针运算
- C - 指针数组
- C - 指针到指针
- C - 将指针传递给函数
- C - 从函数返回指针
- C - 函数指针
- C - 指向数组的指针
- C - 指向结构体的指针
- C - 指针链
- C - 指针与数组
- C - 字符指针和函数
- C - 空指针
- C - void 指针
- C - 野指针
- C - 解引用指针
- C - 近、远和巨型指针
- C - 指针数组的初始化
- C - 指针与多维数组
- C 语言中的字符串
- C - 字符串
- C - 字符串数组
- C - 特殊字符
- C 结构体和联合体
- C - 结构体
- C - 结构体和函数
- C - 结构体数组
- C - 自引用结构体
- C - 查找表
- C - 点 (.) 运算符
- C - 枚举 (或 enum)
- C - 结构体填充和打包
- C - 嵌套结构体
- C - 匿名结构体和联合体
- C - 联合体
- C - 位域
- C - typedef
- C 语言中的文件处理
- C - 输入 & 输出
- C - 文件 I/O (文件处理)
- C 预处理器
- C - 预处理器
- C - 指令
- C - 预处理器运算符
- C - 宏
- C - 头文件
- C 语言中的内存管理
- C - 内存管理
- C - 内存地址
- C - 存储类
- 其他主题
- C - 错误处理
- C - 可变参数
- C - 命令执行
- C - 数学函数
- C - static 关键字
- C - 随机数生成
- C - 命令行参数
- C 编程资源
- C - 问答
- C - 快速指南
- C - 速查表
- C - 有用资源
- C - 讨论
C - 决策
包括 C 在内的每种编程语言都具有决策语句来支持条件逻辑。C 提供了许多替代方案来在代码中添加决策。
任何过程都是三种逻辑类型的组合:
- 顺序逻辑
- 决策或分支
- 重复或迭代
计算机程序本质上是顺序的,默认情况下从上到下运行。C 中的决策语句提供了替代的执行路径。您可以要求一组语句重复执行,直到满足某个条件。
决策结构根据条件控制程序流程。它们是设计复杂算法的重要工具。
我们在 C 程序的决策语句中使用以下关键字和运算符:if、else、switch、case、default、goto、?: 运算符、break 和continue 语句。
在编程中,我们会遇到需要做出一些决策的情况。根据这些决策,我们决定接下来该做什么。类似的情况也出现在算法中,我们需要做出一些决策,并根据这些决策执行下一块代码。
下一条指令取决于布尔表达式,即条件是否被确定为真或假。C 编程语言将任何非零和非空值视为真,如果它是零或空,则将其视为假值。
C 编程语言提供以下类型的决策语句。
序号 | 语句 & 说明 |
---|---|
1 | if 语句 if 语句由一个布尔表达式后跟一个或多个语句组成。 |
2 | if...else 语句 if 语句后面可以跟一个可选的else 语句,当布尔表达式为假时执行该语句。 |
3 | 嵌套 if 语句 您可以在另一个if 或else-if 语句内使用一个if 或else-if 语句。 |
4 | switch 语句 switch 语句允许将变量与其值列表进行相等性测试。 |
5 | 嵌套 switch 语句 您可以在另一个switch 语句内使用一个switch 语句。 |
C 编程语言中的 if 语句
if 语句用于根据真或假的输出在两个路径之间做出决策。它由以下流程图表示:
语法
if (Boolean expr){ expression; . . . }
if 语句由一个布尔表达式后跟一个或多个语句组成。
C 编程语言中的 if...else 语句
if-else 语句在条件不满足时提供备用路径。
语法
if (Boolean expr){ expression; . . . } else{ expression; . . . }
if 语句后面可以跟一个可选的else 语句,当布尔表达式为假时执行该语句。
C 编程语言中的嵌套 if 语句
嵌套 if 语句需要构建复杂的决策树,评估多个嵌套条件以实现细致的程序流程。
您可以在另一个if 或else-if 语句内使用一个if 或else-if 语句。
C 编程语言中的 switch 语句
switch 语句通过评估单个变量与多个值,根据匹配执行特定代码,简化多路选择。它允许将变量与其值列表进行相等性测试。
语法
switch(expression) { case constant-expression : statement(s); break; /* optional */ case constant-expression : statement(s); break; /* optional */ /* you can have any number of case statements */ default : /* Optional */ statement(s); }
与 if 语句一样,您可以在另一个 switch 语句内使用一个 switch 语句。
C 编程语言中的 ?: 运算符
我们在上一章中介绍了条件运算符 (?:),它可以用来替换if-else 语句。它将 if-else 语句压缩成一个表达式,提供简洁易读的代码。
它具有以下一般形式:
Exp1 ? Exp2 : Exp3;
其中 Exp1、Exp2 和 Exp3 是表达式。请注意冒号 (:) 的使用和位置。? 表达式的值如下确定:
计算 Exp1。如果为真,则计算 Exp2 并成为整个? 表达式的值。
如果 Exp1 为假,则计算 Exp3,其值成为: 表达式的值。
您可以使用? 运算符模拟嵌套 if 语句。您可以在现有? 运算符的真和/或假操作数中使用另一个三元运算符。
算法也可以具有迭代逻辑。在 C 中,提供while、do–while 和for 语句来形成循环。
while 和do–while 形成的循环是条件循环,而for 语句形成计数循环。
循环也受布尔表达式的控制。C 编译器根据条件决定是否再次重复循环块。
循环中的程序流程也受不同的跳转语句控制。break 和continue 关键字导致循环终止或执行下一个迭代。
C 编程语言中的 Break 语句
在 C 中,break 语句用于 switch-case 结构以及循环中。当在循环内使用时,它会导致重复被放弃。
C 编程语言中的 Continue 语句
在 C 中,continue 语句导致执行循环的条件测试和增量部分。
C 编程语言中的 Goto 语句
C 还有一个goto 关键字。您可以将程序流重定向到程序中的任何带标签的指令。
以下是 C 中 goto 语句的语法:
goto label; .. . label: statement;
使用 goto 语句,可以将流程重定向到任何上一步或任何后续步骤。
在本章中,我们简要概述了 C 中的决策语句。在后续章节中,我们将对这些决策语句中的每一个进行详细解释,并提供合适的示例。