C语言关系运算符详解
2年前 (2024-04-27)
在上节《C语言if else语句》中看到,if 的判断条件中使用了
关系运算符在使用时,它的的两边都会有一个表达式,比如变量、数值、加减乘除运算等,关系运算符的作用就是判明这两个表达式的大小关系。注意,是判明大小关系,不是其他关系。
C语言提供了以下关系运算符:
关系运算符都是双目运算符,其结性均为左结。关系运算符的优先级低于算术运算符,高于赋值运算符。在六个关系运算符中,<、<=、>、>=的优先级相同,高于==和!=,==和!=的优先级相同。
在C语言中,有的运算符有两个操作数,例如 10+20,10和20都是操作数,+ 是运算符。我们将这样的运算符称为双目运算符。同理,将有一个操作数的运算符称为单目运算符,将有三个操作数的运算符称为三目运算符。
常见的双目运算符有 +、-、*、/ 等,单目运算符有 ++、-- 等,三目运算符只有一个,就是 ? :,我们将在《C语言条件运算符》中详细介绍。
关系运算符的两边可以是变量、数据或表达式,例如:
1) a+b > c-d
2) x > 3/2
3) 'a'+1 < c
4) -i-5*j == k+1
关系运算符也可以嵌套使用,例如:
1) a > (b > c)
2) a != (c == d)
我们将运算结果 1 称为“真”,表示条件成立,将 0 称为“假”,表示条件不成立。
1, 0
1, 1
0, 0
对于含多个关系运算符的表达式,如 k==j==i+5,根据运算符的左结性,先计算k==j,该式不成立,其值为0,再计算0==i+5,也不成立,故表达式值为0。
需要提醒的是,
上面两种情况都是根据变量 b 的最终值来判断的,如果 b 的值为非0,那么条件成立,否则不成立。
<=、>、!=等符号,它们专门用在判断条件中,让程序决定下一步的操作,称为关系运算符(Relational Operators)。关系运算符在使用时,它的的两边都会有一个表达式,比如变量、数值、加减乘除运算等,关系运算符的作用就是判明这两个表达式的大小关系。注意,是判明大小关系,不是其他关系。
C语言提供了以下关系运算符:
关系运算符 | 含 义 | 数学中的表示 |
|---|---|---|
< | 小于 | < |
<= | 小于或等于 | ≤ |
> | 大于 | > |
>= | 大于或等于 | ≥ |
== | 等于 | = |
!= | 不等于 | ≠ |
关系运算符都是双目运算符,其结性均为左结。关系运算符的优先级低于算术运算符,高于赋值运算符。在六个关系运算符中,<、<=、>、>=的优先级相同,高于==和!=,==和!=的优先级相同。
在C语言中,有的运算符有两个操作数,例如 10+20,10和20都是操作数,+ 是运算符。我们将这样的运算符称为双目运算符。同理,将有一个操作数的运算符称为单目运算符,将有三个操作数的运算符称为三目运算符。
常见的双目运算符有 +、-、*、/ 等,单目运算符有 ++、-- 等,三目运算符只有一个,就是 ? :,我们将在《C语言条件运算符》中详细介绍。
关系运算符的两边可以是变量、数据或表达式,例如:
1) a+b > c-d
2) x > 3/2
3) 'a'+1 < c
4) -i-5*j == k+1
关系运算符也可以嵌套使用,例如:
1) a > (b > c)
2) a != (c == d)
关系运算符的运算结果只有 0 或 1。当条件成立时结果为 1,条件不成立结果为 0。例如:
5>0 成立,其值为 1;
34-12>100 不成立,其值为 0;
(a=3)>(b=5) 由于3>5不成立,故其值为 0。
我们将运算结果 1 称为“真”,表示条件成立,将 0 称为“假”,表示条件不成立。
下面的代码会将关系运算符的结果输出:
运行结果:#include <stdio.h>
int main(){
char c='k';
int i=1, j=2, k=3;
float x=3e+5, y=0.85;
int result_1 = 'a'+5<c, result_2 = x-5.25<=x+y;
printf( "%d, %d\n", result_1, -i-2*j>=k+1 );
printf( "%d, %d\n", 1<j<5, result_2 );
printf( "%d, %d\n", i+j+k==-2*j, k==j==i+5 );
return 0;
}
1, 0
1, 1
0, 0
对于含多个关系运算符的表达式,如 k==j==i+5,根据运算符的左结性,先计算k==j,该式不成立,其值为0,再计算0==i+5,也不成立,故表达式值为0。
需要提醒的是,
==才表示等于,而=表示赋值,大家要注意区分,切勿混淆。再谈 if 语句的判断条件
if 语句的判断条件中不是必须要包含关系运算符,它可以是赋值表达式,甚也可以是一个变量,例如:
都是允许的。只要整个表达式的值为非0,条件就成立。//情况①
if(b){
//TODO:
}
//情况②
if(b=5){ //情况①
//TODO:
}
上面两种情况都是根据变量 b 的最终值来判断的,如果 b 的值为非0,那么条件成立,否则不成立。
又如,有程序段:
意思是,把 b 的值赋予 a,如果为非0则输出该值,否则输出“a=0”字符串。这种用法在后面的程序中会经常出现。if(a=b)
printf("%d",a);
else
printf("a=0");
- 随机文章
- 中国 马尔代夫 阵容(中马启程!中国与马尔代夫合作增进友谊)
- 马尔代夫黑人摆件(马尔代夫店铺摆放黑人雕像引起争议)
- 马尔代夫马累历史(探究马尔代夫首都马累的历史文化。)
- 马尔代夫草潭版(马尔代夫美丽草潭:浅水区透明度高达40米)
- 鳐鱼 马尔代夫 英文(Maldives Where Manta Rays Rule the Waters)
- 云南马尔代夫素材(云南锦屏湖:美如马尔代夫的度假胜地)
- 成都 马尔代夫 代理(成都代理带你感受马尔代夫优美之旅)
- 呐喊来到马尔代夫(呐喊告诉你,马尔代夫已经准备好了!)
- 娄底马尔代夫签证(娄底市民赴马尔代夫无需繁琐签证手续)
- 南阳马尔代夫文案(探秘南阳——在中原体验马尔代夫风情)
- 女生骑马马尔代夫(女孩在马尔代夫驾驭马匹,令人惊叹!)
- 出境前往马尔代夫(出国踏浪,马尔代夫水上乐园等你来!)
- 壁纸马尔代夫拍照(拍下最美壁纸!马尔代夫海岛摄影指南)
- 黎明 马尔代夫(马尔代夫海滩上迎来黎明!)
- 成都 马尔代夫(成都公园内惊现马尔代夫风光)
- 湾流直飞马尔代夫(直达马尔代夫!湾流私人飞机带您飞行)
- 中国 马尔代夫(中国和马尔代夫的友谊继续升温)
- 大连马尔代夫飞机(大连首家直飞马尔代夫的航线即将开启)
- 磁县打卡马尔代夫(磁县百姓走进马尔代夫,探秘海洋世界)
- 纯玩马尔代夫旅游(体验马尔代夫:一个纯玩不重复的旅程)
- 磁县马尔代夫入口(磁县新建马尔代夫度假村,美如天堂!)
- 左州 马尔代夫(左州控股入主马尔代夫度假酒店)
- 撑伞图片马尔代夫(美轮美奂!漩涡中的马尔代夫一伞独行)
- 孝感周边马尔代夫(孝感周边:探访风光旖旎的马尔代夫!)
- 湖北洪湖马尔代夫(湖北洪湖开创马尔代夫风情旅游新局面)
- 连江马尔代夫门票(连江县马尔代夫门票预订,快来选购!)
- 迷你马尔代夫解密(探秘迷你马尔代夫:全球最小度假胜地)
- 东台 马尔代夫(东台市民游马尔代夫:海上明珠之旅)
- 马尔代夫为何有钱(马尔代夫奢华背后的财源到底是什么?)
- 马尔代夫从化图片(马尔代夫的美丽和清新在从化尽收眼底)
