C - 决策



包括 C 在内的每种编程语言都具有决策语句来支持条件逻辑。C 提供了许多替代方案来在代码中添加决策。

任何过程都是三种逻辑类型的组合:

  • 顺序逻辑
  • 决策或分支
  • 重复或迭代

计算机程序本质上是顺序的,默认情况下从上到下运行。C 中的决策语句提供了替代的执行路径。您可以要求一组语句重复执行,直到满足某个条件。

决策结构根据条件控制程序流程。它们是设计复杂算法的重要工具。

我们在 C 程序的决策语句中使用以下关键字和运算符ifelseswitchcasedefaultgoto?: 运算符breakcontinue 语句。

在编程中,我们会遇到需要做出一些决策的情况。根据这些决策,我们决定接下来该做什么。类似的情况也出现在算法中,我们需要做出一些决策,并根据这些决策执行下一块代码。

下一条指令取决于布尔表达式,即条件是否被确定为真或假。C 编程语言将任何非零和非空值视为真,如果它是零或空,则将其视为假值。

C 编程语言提供以下类型的决策语句。

序号 语句 & 说明
1

if 语句

if 语句由一个布尔表达式后跟一个或多个语句组成。

2

if...else 语句

if 语句后面可以跟一个可选的else 语句,当布尔表达式为假时执行该语句。

3

嵌套 if 语句

您可以在另一个ifelse-if 语句内使用一个ifelse-if 语句。

4

switch 语句

switch 语句允许将变量与其值列表进行相等性测试。

5

嵌套 switch 语句

您可以在另一个switch 语句内使用一个switch 语句。

C 编程语言中的 if 语句

if 语句用于根据真或假的输出在两个路径之间做出决策。它由以下流程图表示:

Decision making statements in C

语法

if (Boolean expr){
   expression;
   . . .
}

if 语句由一个布尔表达式后跟一个或多个语句组成。

C 编程语言中的 if...else 语句

if-else 语句在条件不满足时提供备用路径。

C if...else statement

语法

if (Boolean expr){
   expression;
   . . .
}
else{
   expression;
   . . .
}

if 语句后面可以跟一个可选的else 语句,当布尔表达式为假时执行该语句。

C 编程语言中的嵌套 if 语句

嵌套 if 语句需要构建复杂的决策树,评估多个嵌套条件以实现细致的程序流程。

nested if statements

您可以在另一个ifelse-if 语句内使用一个ifelse-if 语句。

C 编程语言中的 switch 语句

switch 语句通过评估单个变量与多个值,根据匹配执行特定代码,简化多路选择。它允许将变量与其值列表进行相等性测试。

switch statement in C

语法

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 中,提供whiledo–whilefor 语句来形成循环。

whiledo–while 形成的循环是条件循环,而for 语句形成计数循环。

循环也受布尔表达式的控制。C 编译器根据条件决定是否再次重复循环块。

循环中的程序流程也受不同的跳转语句控制。breakcontinue 关键字导致循环终止或执行下一个迭代。

C 编程语言中的 Break 语句

在 C 中,break 语句用于 switch-case 结构以及循环中。当在循环内使用时,它会导致重复被放弃。

c break statement

C 编程语言中的 Continue 语句

在 C 中,continue 语句导致执行循环的条件测试和增量部分。

C continue statement

C 编程语言中的 Goto 语句

C 还有一个goto 关键字。您可以将程序流重定向到程序中的任何带标签的指令。

以下是 C 中 goto 语句的语法

goto label;
..
.
label: statement;
C goto statement

使用 goto 语句,可以将流程重定向到任何上一步或任何后续步骤。

在本章中,我们简要概述了 C 中的决策语句。在后续章节中,我们将对这些决策语句中的每一个进行详细解释,并提供合适的示例。

广告