Menu Close

什么是C语言的条件语句?

C编程中的条件语句用于根据条件进行决策。 当语句周围没有条件时,条件语句将顺序执行。

如果为语句块放置一些条件,则执行流程可能会根据条件评估的结果而变化。 此过程称为“ C”决策。

关系运算符

下表显示了C语言支持的关系运算符。假设变量A=10,变量B=20,则 –

运算符 描述 示例
== 检查两个操作数的值是否相等。 如果相等,则条件成立。 (A == B)结果为false
!= 检查两个操作数的值是否相等。 如果值不相等,则条件成立。 (A != B) 结果为true
> 检查左操作数的值是否大于右操作数的值。 如果是,则条件成立。 (A > B) 结果为false
< 检查左操作数的值是否小于右操作数的值。 如果是,则条件成立。 (A < B)结果为true
>= 检查左操作数的值是否大于等于右操作数的值。 如果是,则条件成立。 (A >= B) 结果为false
<= 检查左操作数的值是否小于等于右操作数的值。 如果是,则条件成立。 (A <= B)结果为true

关系运算符都是双目运算符,其结合性均为左结合。关系运算符的优先级低于算术运算符,高于赋值运算符。 在六个关系运算符中,<,<=,>,>=的优先级相同,高于==和!=,==和!=的优先级相同。C的六个关系运算符,和布尔表达式结合给出测试结果,返回true或false。

注意,相等运算符(==)与赋值运算符(=)是不一样的。

关系运算符表达式

关系表达式的一般形式为:

表达式  关系运算符  表达式

例如:

a+b>c-d

x>3/2

‘a’+1<c

-i-5*j==k+1

都是合法的关系表达式。由于表达式也可以又是关系表达式。 因此也允许出现嵌套的情况。

例如:

a>(b>c)

a!=(c==d)

等。

关系表达式的值是True(真)和False(假),用“1”和“0”表示。

如:

5>0 的值为True“真”,即为 1。(a=3)>(b=5)由于 3>5 不成立,故其值为False假,即为 0。

关系运算符的举例可以在以下条件语句中看到。

在“ C”编程中,可以使用条件语句:

1. If statement (IF 语句)

2. If-else statement (IF Else 语句)也称分支语句,因为程序将根据评估条件的结果决定执行哪个语句。

IF语句

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

 if (condition) 
     instruction; 

条件评估为true或false。 True始终是一个非零值,而false则零。 指令可以是单个指令,也可以是用大括号{}括起来的代码块。

以下程序说明了“ 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;
}

上面的程序说明了if结构检查两个数字是否相等的用法。

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

 

#include<stdio.h>
int main()
{
	int x = 41;
    x =x+ 1;
    if (x == 42) {
    printf("You succeed!");}
    return 0;
}

请记住,评估为非零值的条件被认为是正确的。

#include<stdio.h>
int main()
{
     int present = 1;
     if (present)
     printf("There is someone present in the classroom \n");
    return 0;
}

IF ELSE 语句

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

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

test-expression – 测试表达式

在这种类型的构造中,如果test-expression的值为true,则将执行语句的true块。 如果test-expression的值为false,则将执行false语句块。 无论如何,执行后,控件将自动转移到If块外出现的语句。

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

我们将使用某个值初始化变量,然后编写程序以确定该值是小于10还是大于10。

开始吧。

#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

IF ELSE 语句分析

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

嵌套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语句打印结果。

  1. 首先,我们声明了一个变量num,其值为1。然后,我们使用了if-else构造。
  2. 在外部if-else中,提供的条件检查数字是否小于10。如果条件为true,执行内部循环。 在该例中,条件为真,因此将进入内部块进行运算
  3. 在内部块运算中,我们再次有一个条件检查我们的变量是否包含值1。 当条件为真时,它将处理If块,否则将处理else块。 在这种情况下,条件为真,因此如果执行了一个程序段,并且该值被打印在输出屏幕上。
  4. 上面的程序将打印变量的值并成功退出。

注意:在嵌套的if-else中,我们必须谨慎对待if else开始位置对齐,因为此过程涉及多个if-else构造,因此很难弄清各个构造。 适当的缩进可以轻松读取程序。

嵌套ELSE IF 语句

当需要有很多决定是,你可以使用嵌套ELSE IF语句。

嵌套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个测试表达式都为false时,将执行默认的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阶梯,并且将打印默认语句。

条件运算符和条件表达式

如果在条件语句中,只执行单个的赋值语句时, 常可使用条件表达式来实现。不但使程序简洁,也提高了运行效率。

条件运算符为 ?和:,它是一个三目运算符,即有三个参与运算的量。

由条件运算符组成条件表达式的一般形式为:

表达式 1?  表达式 2: 表达式 3

其求值规则为:如果表达式 1 的值为真,则以表达式 2 的值作为条件表达式的值,否则以表达式 2 的值作为整个条件表达式的值。

条件表达式通常用于赋值语句之中。

例如条件语句:

if(a>b) max=a;

else max=b;

可用条件表达式写为

max=(a>b)?a:b;

执行该语句的语义是:如 a>b 为真,则把 a 赋予 max,否则把 b 赋予 max。

使用条件表达式时,还应注意以下几点:

1) 条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。因此

max=(a>b)?a:b

可以去掉括号而写为

max=a>b?a:b

2) 条件运算符?和:是一对运算符,不能分开单独使用。

3) 条件运算符的结合方向是自右至左。

例如:

a>b?a:c>d?c:d

应理解为

a>b?a:(c>d?c:d)

这也就是条件表达式嵌套的情形,即其中的表达式 3 又是一个条件表达式。

例三:

main()
{ 
 int a,b,max; 
 printf("\n input two numbers: "); 
 scanf("%d%d",&amp;a,&amp;b); 
 printf("max=%d",a&gt;b?a:b); 
}

用条件表达式对上例重新编程,输出两个数中的大数。

摘要

  • 决策或分支语句将根据测试表达式的结果选择一条路径。它也称为控制语句,因为它控制程序的执行流程。
  • C为决策陈述提供if,if-else语句。
  • 当必须测试多个路径时,我们还可以将if-else相互嵌套。
  • 当我们必须根据表达式的结果检查各种方式时,使用else-if阶梯。