C语言中的关系运算符



C语言中的关系运算符用于比较两个值。常见的尖括号<>是关系运算符,此外还有下表中列出的其他一些运算符。

这些关系运算符用于布尔表达式。所有关系运算符都计算结果为真或假。

C语言没有布尔数据类型。相反,“0”被解释为假,任何非零值都被视为真。

示例1

以下是一个C语言中关系运算符的简单示例:

#include <stdio.h>

int main(){

   int op1 = 5;
   int op2 = 3;

   printf("op1: %d op2: %d op1 < op2: %d\n", op1, op2, op1 < op2);

   return 0;
}

输出

运行代码并检查其输出:

op1: 5 op2: 3 op1 < op2: 0

关系运算符在C语言中的决策控制和循环语句中起着重要作用。

下表列出了C语言中的所有关系运算符:

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

所有关系运算符都是二元运算符。由于它们执行比较,因此需要两侧都有两个操作数。

我们在C语言中使用=符号作为赋值运算符。因此,C语言使用“==”(双等号)作为等号运算符

尖括号><用作“大于”和“小于”运算符。当与“=”符号结合使用时,它们形成“>=”运算符表示“大于或等于”和“<=”运算符表示“小于或等于”比较。

最后,“!”前缀的“=”符号(!=)用作不等号运算符

示例2

以下示例显示了所有关系运算符的使用。

#include <stdio.h>

int main(){

   int a = 21;
   int b = 10;
   int c ;
   
   printf("a: %d b: %d\n", a,b);
    
   if(a == b){
      printf("Line 1 - a is equal to b\n" );
   } else {
      printf("Line 1 - a is not equal to b\n" );
   }
	
   if (a < b){
      printf("Line 2 - a is less than b\n" );
   } else {
      printf("Line 2 - a is not less than b\n" );
   }
	
   if (a > b){
      printf("Line 3 - a is greater than b\n" );
   } else {
      printf("Line 3 - a is not greater than b \n\n" );
   }
   
   /* Lets change value of a and b */
   a = 5;
   b = 20;
   
   printf("a: %d b: %d\n", a,b);
	
   if (a <= b){
      printf("Line 4 - a is either less than or equal to  b\n" );
   }
	
   if (b >= a){
      printf("Line 5 - b is either greater than  or equal to b\n" );
   }
   
   if(a != b){
      printf("Line 6 - a is not equal to b\n" );
   } else {
      printf("Line 6 - a is equal to b\n" );
   }
   
   return 0;
}

输出

运行此代码时,将产生以下输出:

a: 21 b: 10
Line 1 - a is not equal to b
Line 2 - a is not less than b
Line 3 - a is greater than b

a: 5 b: 20
Line 4 - a is either less than or equal to  b
Line 5 - b is either greater than  or equal to b
Line 6 - a is not equal to b

示例3

==运算符需要谨慎使用。请记住,“=”是C语言中的赋值运算符。如果错误地将其用作等号运算符,则会得到不正确的输出,如下所示:

#include <stdio.h>

int main(){

   int a = 5;
   int b = 3;

   if (a = b){
      printf("a is equal to b");
   }
   else {
      printf("a is not equal to b");
   }
   
   return 0;
}

输出

“b”的值被赋给“a”,该值非零,因此if表达式返回真。

a is equal to b

示例4

我们也可以将“char”类型作为所有关系运算符的操作数,因为“char”类型是“int”类型的子集。请看以下示例:

#include <stdio.h>

int main(){

   char a = 'B';
   char b = 'd';

   printf("a: %c b: %c\n", a,b);

   if(a == b){
      printf("Line 1 - a is equal to b \n");
   } else {
      printf("Line 1 - a is not equal to b \n");
   }

   if (a < b){
      printf("Line 2 - a is less than b \n");
   } else {
      printf("Line 2 - a is not less than b \n");
   }

   if (a > b) {
      printf("Line 3 - a is greater than b \n");
   } else {
      printf("Line 3 - a is not greater than b \n");
   }
   
   if(a != b) {
      printf("Line 4 - a is not equal to b \n");
   } else {
      printf("Line 4 - a is equal to b \n");
   }
   
   return 0;
}

输出

运行代码并检查其输出:

a: B b: d
Line 1 - a is not equal to b
Line 2 - a is less than b
Line 3 - a is not greater than b
Line 4 - a is not equal to b

关系运算符不能用于比较诸如数组之类的二级类型或诸如结构体或联合体之类的派生类型。

c_operators.htm
广告