-
在C++中,关系运算符用于判断表达式之间的大小关系,对两边的值进行6种情况的判断:
- 大于>和大于等于>=运算符
- 小于<和小于等于<=运算符
- 相等==和不相等!=运算符
-
关系运算符中,表达式结果的类型可以是字符或者数字,但不可以是字符串
-
关系表达式返回一个布尔值:成立为1(true)代表真,不成立为0(false)代表假
-
浮点数一般不会用 == 或者 != 来判断,因为可能产生表示误差。
- 比较两个浮点数是否相等,需要看两个数的差值是否小于一定的精度,比如:对于浮点数a和b,如果(a - b) < 1e-6 如果值为真,就判断两个浮点数相等。
关系表达式可以判断某个条件是否成立,逻辑表达式中包含了多个关系表达式,可以对多个条件进行判断
- C++使用逻辑运算符连接多个关系表达式,从而构建逻辑表达式。
- 常用的逻辑运算符有以下三种:
- 逻辑AND运算符&&:判断两个关系表达式是否同时成立
- 逻辑OR运算符||:判断两个关系表达式是否至少有一个成立
- 逻辑NOT运算符!:判断某个关系表达式是否不成立
假设p1和p2是关系表达式的返回结果,逻辑运算符的运算规则可以参考下表:
运算符优先级至此,我们已经学习的运算符如下:
- 算术运算符(+ - * / % ++ --等)
- 赋值运算符(=等)
- 位运算符(<< >>等)
- 关系运算符(> >= < <= == !=等)
- 逻辑运算符(&& || !等)
运算符优先顺序:赋值运算符< 逻辑与运算符< 关系运算符< 算术运算符。
对于这些常用的运算符,按照计算优先级从高到低(左边更高,右边更低)进行排列,可以得到如下表格:
Tips:对于一个表达式,虽然可以通过计算优先级省略掉括号,但为了代码的可读性,我们在编写时一般都选择把括号加上。
练习1:输入年份,判断是否为闰年
#include#include using namespace std; int main() { int year; cin >> year; bool is_leap_year; // TODO 请用一个表达式来判断 year 是否为闰年 // 是400的倍数;或者是4的倍数并且不是100的倍数 is_leap_year = (year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0)); // 也可以这么写: // is_leap_year = !(year % 400) || (!(year % 4) && (year % 100)); cout << is_leap_year << endl; return 0; }
练习2:下列运算输出结果为:
int a, b, c; a = b = c = 1; cout << a-- || --b && ++c;
输出:1
表达式cout << a-- || --b && ++c;中,a--先计算逻辑表达式,再改变变量a的数值;--b与++c先改变变量b与c的数值,再计算逻辑表达式:
- 根据运算优先级,先执行&&运算:--b && ++c即为0 && 2,得到0;
- 再进行|| 运算:a-- || 0即为1 || 0,得到1,故输出表达式值为1。
- (变量a逻辑运算结束后,值改变为0。)



