4. 关系运算符
关系运算符(Relational operators)用于比较两个操作数的值,返回它们是否成立的一个布尔值。
布尔值
布尔值 是由 19 世纪英国著名的数学家和逻辑学家乔治·布尔(George Boole,1815.11.2~1864.12.8)提出,用于表示逻辑关系。
布尔值分为两种:
- 真(true),表示成立。
- 假(false),表示不成立。
C 语言中的布尔值:
在C语言中用数值表示布尔值:
- 零值表示假(false),如:0 或 0.0。
- 非零值表示真(true),如 1 或 3.14。
关系运算符
< // 小于运算符
> // 大于运算符
<= // 小于等于运算符
>= // 大于等于运算符
== // 等于运算符
!= // 不等于运算符
其中 <、>、<=、>= 四个运算符的优先级高于 ==、!= 的优先级,即先比较然后才判断是否相等。
语法
左表达式 关系运算符 右表达式
说明
关系运算符运算后用整数 0 代表假,用整数 1 表示真。
示例:
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("100 < 200 的结果:%d\n", 100 < 200);
printf("100 > 200 的结果:%d\n", 100 > 200);
printf("100 <= 200 的结果:%d\n", 100 <= 200);
printf("100 >= 200 的结果:%d\n", 100 >= 200);
printf("100 == 200 的结果:%d\n", 100 == 200);
printf("100 != 200 的结果:%d\n", 100 != 200);
return 0;
}
运行结果
100 < 200 的结果:1
100 > 200 的结果:0
100 <= 200 的结果:1
100 >= 200 的结果:0
100 == 200 的结果:0
100 != 200 的结果:1
注意事项
- 等于运算符(
==)是双等号是关系运算符,而复制运算符(=)是单等号,两者完全不同。但有时在表达式中会出现x == 100写成x = 100,导致 x 的值被修改且条件一直成立,比较好的写法是 写成100 == x,一旦少写一个等号,则会出现 赋值表达式中左侧出现常量,在编辑阶段就会报错。 - 由于浮点数精度问题,应避免直接用
==比较浮点数,要比较浮点数是否相等通常使用将两个操作数相减,再判断结果的绝对值是否小于某个误差范围,如果小于误差范围则认为两个浮点数相等。否则就是不相等。 - 关系运算符的优先级低于算术运算符但高于赋值运算符。
练习:
写程序,假设一个商品在拍卖会上竞拍。现在有两个人竞拍。请输入你的竞拍价格,再输入另外一个人的竞拍价格。打印竞拍结果:1 表示你竞拍成功。0 表示你竞拍失败。