C 语言编程教程

C 语言 - 首页

C 语言基础

C 语言 - 概述 C 语言 - 特性 C 语言 - 发展历史 C 语言 - 环境设置 C 语言 - 程序结构 C 语言 - Hello World C - 编译过程 C - 注释 C - 标记 C - 关键字 C - 标识符 C - 用户输入 C - 基本语法 C - 数据类型 C - 变量 C - 整数提升 C - 类型转换 C - 类型转换 C - 布尔值

C 语言中的常量和文字

C - 常量 C - 字面量 C - 转义序列 C - 格式说明符

C 语言中的运算符

C - 运算符 C - 算术运算符 C - 关系运算符 C - 逻辑运算符 C - 位运算符 C - 赋值运算符 C - 一元运算符 C - 递增和递减运算符 C - 三元运算符 C - sizeof 运算符 C - 运算符优先级 C - 其他运算符

C 语言中的决策

C - 决策 C - if 语句 C - if...else 语句 C - 嵌套 if 语句 C - switch 语句 C - 嵌套 switch 语句

C 语言中的循环

C - 循环 C - While 循环 C - For 循环 C - Do...while 循环 C - 嵌套循环 C - 无限循环 C - Break 语句 C - Continue 语句 C - goto 语句

C 语言中的函数

C - 函数 C - Main 函数 C - 按值调用函数 C - 按引用调用函数 C - 嵌套函数 C - 可变参数函数 C - 用户定义函数 C - 回调函数 C - return 语句 C - 递归

C 语言中的作用域规则

C - 作用域规则 C - 静态变量 C - 全局变量

C 语言中的数组

C - 数组 C - 数组的属性 C - 多维数组 C - 将数组传递给函数 C - 从函数返回数组 C - 可变长度数组

C 语言中的指针

C - 指针 C - 指针和数组 C - 指针的应用 C - 指针运算 C - 指针数组 C - 指向指针的指针 C - 将指针传递给函数 C - 从函数返回指针 C - 函数指针 C - 指向数组的指针 C - 指向结构体的指针 C - 指针链 C - 指针 vs 数组 C - 字符指针和函数 C - NULL 指针 C - void 指针 C - 悬垂指针 C - 解引用指针 C - Near、Far 和 Huge 指针 C - 指针数组的初始化 C - 指针与多维数组

C 语言中的字符串

C - 字符串 C - 字符串数组 C - 特殊字符

C 语言的结构体和联合

C - 结构体 C - 结构体和函数 C - 结构体数组 C - 自引用结构 C - 查找表 C - 点 (.) 运算符 C - 枚举(或 enum) C - 结构填充和打包 C - 嵌套结构 C - 匿名结构和联合 C - 联合 C - Bit 位字段 C - Typedef

C 语言中的文件处理

C - 输入和输出 C - 文件 I/O(文件处理)

C 语言中的预处理器

C - 预处理器 C - #pragma 编译指示 C - 预处理器操作符 C - 宏 C - 头文件

C 语言中的内存管理

C - 内存管理 C - 内存地址 C - 存储类

C 其他主题

C - 错误处理 C - 可变参数 C - 命令执行 C - 数学函数 C - static 静态关键字 C - 随机数生成 C - 命令行参数

C 语言编程资源

C语言问题与解答答案 C语言快速指南 C语言速查表 C语言实用资源 C语言讨论


C 语言中的关系运算符

C 语言中的关系运算符用于比较两个值。除了常见的尖括号 <> 之外,还有一些其他运算符,如下表所示。

这些关系运算符用于布尔表达式。所有关系运算符的计算结果均为 True 或 False。

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

示例 1

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

#include <stdio.h>

int main(){

   int op1 = 5;
   int op2 = 3;

   printf("op1: %d op2: %d op1 < op2: %d
", 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
", a,b);
    
   if(a == b){
      printf("Line 1 - a is equal to b
" );
   } else {
      printf("Line 1 - a is not equal to b
" );
   }
	
   if (a < b){
      printf("Line 2 - a is less than b
" );
   } else {
      printf("Line 2 - a is not less than b
" );
   }
	
   if (a > b){
      printf("Line 3 - a is greater than b
" );
   } else {
      printf("Line 3 - a is not greater than b 
" );
   }
   
   /* Lets change value of a and b */
   a = 5;
   b = 20;
   
   printf("a: %d b: %d
", a,b);
	
   if (a <= b){
      printf("Line 4 - a is either less than or equal to  b
" );
   }
	
   if (b >= a){
      printf("Line 5 - b is either greater than  or equal to b
" );
   }
   
   if(a != b){
      printf("Line 6 - a is not equal to b
" );
   } else {
      printf("Line 6 - a is equal to b
" );
   }
   
   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 表达式返回 true。

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
", a,b);

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

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

   if (a > b) {
      printf("Line 3 - a is greater than b 
");
   } else {
      printf("Line 3 - a is not greater than b 
");
   }
   
   if(a != b) {
      printf("Line 4 - a is not equal to b 
");
   } else {
      printf("Line 4 - a is equal to b 
");
   }
   
   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.html