C语言中的条件语句:If、Else、嵌套If语句及示例

⚡ 智能摘要

C 语言中的条件语句通过仅在测试条件为真时执行代码块来控制程序的流程,从而能够通过 if、if-else、嵌套和 else-if 阶梯结构进行决策。

  • 🔤 如果语句: if 语句仅在条件为非零真值时执行其代码块,而零表示假。
  • 🔀 如果-否则: if-else 结构增加了一个 false 分支,当条件为真时运行一个代码块,当条件为假时运行另一个代码块。
  • 关系运算符: 六个运算符(<、<=、>、>=、==、!=)构成每个条件测试的布尔表达式。
  • 🪜 否则梯形图: 嵌套的 else-if 语句从上到下检查多个表达式,并运行第一个为真的分支,或者执行默认的 else 分支。
  • 三元运算符: ?: 条件表达式在一行中编写一个简洁的 if-else 语句,返回两个值之一。
  • 🤖 人工智能辅助: GitHub Copilot 可以草拟和审查 if-else 逻辑,标记缺失的大括号,并建议更简洁的条件。

C语言条件语句:IF、IF Else和嵌套IF Else

C 中的条件语句是什么?

C语言中的条件语句用于根据条件做出决策。当语句块周围没有条件时,它们会按顺序执行。如果为语句块添加条件,则执行流程会根据条件判断的结果而改变。这个过程在C语言中被称为决策。

不比 C语言中的循环 重复的代码,条件语句会选择一条路径。

在 C 语言编程中,可以借助以下两种结构来实现条件语句:

  1. 如果声明
  2. 如果-否则语句

它也被称为分支,因为程序根据评估条件的结果来决定执行哪个语句。

如果声明

它是功能强大的条件语句之一。If 语句负责修改程序的执行流程。If 语句始终与条件一起使用。在执行 If 主体内的任何语句之前,首先评估条件。if 语句的语法如下:

 if (condition) 
     instruction;

条件计算结果为真或假。真始终是非零值,假是包含零的值。指令可以是单个指令,也可以是用花括号 { } 括起来的代码块。

以下程序说明了在 C 语言编程中 if 结构的使用:

#include<stdio.h>
int main()
{
	int num1=1;
	int num2=2;
	if(num1<num2)		//test-condition
	{
		printf("num1 is smaller than num2");
	}
	return 0;
}

输出:

num1 is smaller than num2

上述程序说明了如何使用 if 结构来检查两个数字是否相等。

C语言中的If语句流程图

  1. 在上面的程序中,我们用num1,num2初始化了两个变量,值分别为1,2。
  2. 然后,我们使用 if 和测试表达式来检查哪个数字最小,哪个数字最大。我们在 if 结构中使用了关系表达式。由于 num1 的值小于 num2,因此条件将计算为真。
  3. 因此它将打印 If 块内的语句。此后,控制将移出该块,程序将以成功结果终止。

相关的 Opera职权范围

C 语言有六个关系运算符,可用于构建布尔表达式,以做出决策和测试条件,并返回真或假:

  • < - 少于
  • <= — 小于或等于
  • > — 大于
  • >= — 大于或等于
  • == — 等于
  • != — 不等于

请注意,相等测试(==)与赋值运算符(=)不同,因为混淆它们是程序员最常面临的问题之一。

例如:

int x = 41;
x =x+ 1;
if (x == 42) {
   printf("You succeed!");}

输出:

 You succeed

请记住,计算结果为非零值的条件被视为真。

例如:

int present = 1;
if (present)
  printf("There is someone present in the classroom \n");

输出:

There is someone present in the classroom

If-Else 语句

C语言If-Else语句流程图

if-else语句是if语句的扩展形式。if-else语句的一般形式如下:

if (test-expression)
{
    True block of statements
}
Else
{
    False block of statements
}
Statements;

在这种结构中,如果测试表达式的值为真,则执行真语句块;如果测试表达式的值为假,则执行假语句块。无论结果如何,执行完毕后,控制权都会自动转移到 If 语句块之外的语句。

以下程序说明了 if-else 结构的用法:

我们将用某个值初始化一个变量,并编写一个程序来确定该值是小于十还是大于十。

开始吧。

#include<stdio.h>
int main()
{
	int num=19;
	if(num<10)
	{
		printf("The value is less than 10");
	}
	else
	{
		printf("The value is greater than 10");
	}
	return 0;
}

输出:

The value is greater than 10

C语言中的If-Else语句示例输出

  1. 我们已经初始化了一个值为 19 的变量。我们必须使用“C”程序找出该数字是大于还是小于 10。为此,我们使用了 if-else 结构。
  2. 这里我们提供了一个条件 num<10,因为我们必须将我们的值与 10 进行比较。
  3. 如您所见,第一个块始终是真块,这意味着,如果测试表达式的值为真,则将执行第一个块(即 If)。
  4. 第二个块是 else 块。此块包含当测试表达式的值为 false 时将执行的语句。在我们的程序中,num 的值大于 10,因此测试条件变为 false,并执行 else 块。因此,我们的输出将来自 else 块,即“值大于 XNUMX”。在 if-else 之后,程序将以成功结果终止。

在“C”编程中,我们可以在彼此内使用多个 if-else 结构,这称为 if-else 语句嵌套。

条件表达式

另一种表达 if-else 语句的方法是引入 ?: 运算符。在条件表达式中,?: 运算符仅与 if 和 else 两个条件语句相关联。

例如:

#include <stdio.h>
int main() {
  int y;
  int x = 2;
   y = (x >= 6) ?  6 : x;/* This is equivalent to:  if (x >= 5)    y = 5;  else    y = x; */
   printf("y =%d ",y);
  return 0;}

输出:

y =2

嵌套 If-else 语句

当需要进行一系列决策时,会使用嵌套的 if-else。嵌套意味着在一个 if-else 结构中使用另一个 if-else 结构。

我们来编写一个程序来说明嵌套if-else的用法。

#include<stdio.h>
int main()
{
	int num=1;
	if(num<10)
	{
		if(num==1)
		{
			printf("The value is:%d\n",num);
		}
		else
		{
			printf("The value is greater than 1");
		}
	}
	else
	{
		printf("The value is greater than 10");
	}
	return 0;
}

输出:

The value is:1

上述程序检查数字是否小于或大于 10,并使用嵌套的 if-else 结构打印结果。

C语言中的嵌套If-else语句

  1. 首先,我们声明一个变量 num,其值为 1。然后我们使用 if-else 构造。
  2. 在外层 if-else 语句中,提供的条件检查一个数字是否小于 10。只有当条件为真时,才会执行内层代码块。在本例中,条件为真,因此执行内层代码块。
  3. 在内部代码块中,我们再次设置了一个条件,用于检查变量是否包含值 1。当条件为真时,执行 If 代码块;否则,执行 else 代码块。在本例中,条件为真,因此执行 If 代码块,并将值打印到输出屏幕上。
  4. 上述程序将打印变量的值并成功退出。

尝试更改以下值: 变量 看看程序是如何运行的。

注意:在嵌套的 if-else 语句中,我们需要注意缩进,因为这个过程涉及多个 if-else 结构,容易导致难以区分各个结构。正确的缩进能够使程序更易于阅读。

嵌套 Else-if 语句

C语言中的嵌套Else-if语句

当需要多路径决策时,使用嵌套的 else-if。

在 C 语言编程中,构建 else-if 阶梯的一般语法如下:

 if (test - expression 1) {
    statement1;
} else if (test - expression 2) {
    Statement2;
} else if (test - expression 3) {
    Statement3;
} else if (test - expression n) {
    Statement n;
} else {
    default;
}
Statement x;

这种结构被称为 else-if 梯形结构。这条链通常看起来像一个梯子,因此也称为 else-if 梯形结构。测试表达式从上到下依次求值。每当找到一个为真的测试表达式时,就执行与其关联的语句。当所有 n 个测试表达式都为假时,则执行默认的 else 语句。

让我们借助程序来看看实际的工作情况。

#include<stdio.h>
int main()
{
	int marks=83;
	if(marks>75){
		printf("First class");
	}
	else if(marks>65){
		printf("Second class");
	}
	else if(marks>55){
		printf("Third class");
	}
	else{
		printf("Fourth class");
	}
	return 0;
}

输出:

First class

上述程序根据测试得分打印成绩。我们在以上程序中使用了 else-if 阶梯结构。

  1. 我们已经用标记初始化了一个变量。在 else-if 梯形结构中,我们提供了各种条件。
  2. 变量标记的值将与第一个条件进行比较,因为它为真,所以与其相关的语句将打印在输出屏幕上。
  3. 如果第一个测试条件结果为假,则将其与第二个条件进行比较。
  4. 该过程将持续进行,直到所有表达式都被评估完毕,否则控制将离开 else-if 语句链,并打印默认语句。

尝试修改该值并注意输出的变化。

常见问题

if-else 语句可以测试任何布尔表达式,包括范围和关系检查。 切换…情况 将一个变量与固定的常量值进行比较,并且在许多情况下通常会编译成更快的跳转表。

悬空 else 问题是指当 if 语句嵌套且未用花括号括起来时,else 语句所属 if 语句的歧义。在 C 语言中,else 语句总是与最近的未匹配的 if 语句配对。添加花括号可以消除这种歧义。

是的。逻辑运算符用于连接条件:&& 要求两侧都为真,|| 要求至少有一个条件为真,而 ! 则反转结果。例如,if (age > 18 && citizen) 会在一个 if 语句中同时测试两个条件。

当语句体只有一个语句时,大括号是可选的,因此 C 语言只会执行下一行。对于两个或多个语句,必须使用大括号将它们括起来。始终使用大括号是一种安全习惯,可以防止逻辑错误。

短路求值会在结果确定后立即停止。使用 && 时,如果左侧为假,则跳过右侧;使用 || 时,如果左侧为真,则跳过右侧。这样可以避免不必要的计算和不安全的操作。

是的。else-if 语句从上到下依次执行,遇到第一个真条件就会停止。如果把宽泛的条件放在具体的条件之前,可能会掩盖具体的情况,所以要按照从最具体到最一般的顺序来执行测试。

是的。AI 代码助手可以根据注释自动生成条件语句块,将冗长的 if-else 语句链转换为更简洁的结构,并标记出潜在的错误,例如使用了 = 而不是 ==。在信任生成的逻辑之前,务必先进行测试。

GitHub 副驾驶 它会根据注释或周围代码自动补全 if、else-if 和嵌套条件语句。它还会建议关系表达式和逻辑表达式,并能添加缺失的大括号,但您应该检查每个建议。

总结一下这篇文章: