Cprogramming 简明教程

Relational Operators in C

C 中的关系运算符被定义为执行两个值的比较。熟悉的尖括号 <> 是关系运算符,此外还有如下表所示的更多关系运算符。

这些关系运算符用于布尔表达式中。所有关系运算符都会计算为 True 或 False。

C 没有布尔数据类型。相反,“0”被解释为 False,任何非零值被视为 True。

Example 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;
}

Output

运行代码并检查其输出:

op1: 5 op2: 3 op1 < op2: 0

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

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

Operator

Description

Example

==

检查两个操作数的值是否相等。如果相等,则结果为 true。

(A == B)

!=

检查两个操作数的值是否相等。如果相等,则结果为 true。

(A != B)

>

检查左操作数的值是否大于右操作数的值。如果大于,则结果为 true。

(A > B)

<

检查左操作数的值是否小于右操作数的值。如果小于,则结果为 true。

(A < B)

>=

检查左操作数的值是否大于或等于右操作数的值。如果大于或等于,则结果为 true。

(A >= B)

检查左操作数的值是否小于或等于右操作数的值。如果小于或等于,则结果为 true。

(A ⇐ B)

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

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

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

最后,带有“!”前缀的等号“!=”用作 inequality operator

Example 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;
}

Output

当你运行这段代码时,它将产生以下输出:

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

Example 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;
}

Output

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

a is equal to b

Example 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;
}

Output

运行代码并检查其输出:

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

关系运算符不能用于比较次要类型,例如数组或派生类型,例如结构或联合类型。