在 C++ 中,关系运算符和逻辑运算符比较两个或多个操作数,并返回 true 或 false 值。
我们在决策制定时使用这些运算符。
C++ 关系运算符
关系运算符用于检查两个操作数之间的关系。例如,
// checks if a is greater than b
a > b;
在这里,> 是一个关系运算符。它检查 a 是否大于 b。
如果关系为真,则返回1,如果关系为假,则返回0。
下表总结了 C++ 中使用的关系运算符。
| 运算符 | 含义 | 示例 |
|---|---|---|
== |
等于 | 3 == 5 的结果是false |
!= |
不等于 | 3 != 5 的结果是true |
> |
大于 | 3 > 5 的结果是false |
< |
小于 | 3 < 5 的结果是true |
>= |
大于或等于 | 3 >= 5 的结果是false |
<= |
小于或等于 | 3 <= 5 的结果是true |
== 运算符
等于 == 运算符返回
true- 如果两个操作数相等或相同false- 如果操作数不相等
例如,
int x = 10;
int y = 15;
int z = 10;
x == y // false
x == z // true
注意:关系运算符 == 与赋值运算符 = 不同。赋值运算符 = 将值赋给变量、常量、数组或向量。它不比较两个操作数。
!= 运算符
不等于 != 运算符返回
true- 如果两个操作数不相等false- 如果两个操作数相等。
例如,
int x = 10;
int y = 15;
int z = 10;
x != y // true
x != z // false
> 运算符
大于 > 运算符返回
true- 如果左操作数大于右操作数false- 如果左操作数小于右操作数
例如,
int x = 10;
int y = 15;
x > y // false
y > x // true
< 运算符
小于运算符 < 返回
true- 如果左操作数小于右操作数false- 如果左操作数大于右操作数
例如,
int x = 10;
int y = 15;
x < y // true
y < x // false
>= 运算符
大于或等于 >= 运算符返回
true- 如果左操作数大于或等于右操作数false- 如果左操作数小于右操作数
例如,
int x = 10;
int y = 15;
int z = 10;
x >= y // false
y >= x // true
z >= x // true
<= 运算符
小于或等于运算符 <= 返回
true- 如果左操作数小于或等于右操作数false- 如果左操作数大于右操作数
例如,
int x = 10;
int y = 15;
x > y // false
y > x // true
要了解关系运算符如何与字符串一起使用,请参阅我们的教程。
C++ 逻辑运算符
我们使用逻辑运算符来检查表达式是真还是假。如果表达式为真,则返回1,如果表达式为假,则返回0。
| 运算符 | 示例 | 含义 |
|---|---|---|
&& |
expression1 && expression 2 | 逻辑与。 仅当所有操作数都为真时才为真。 |
|| |
expression1 || expression 2 | 逻辑或。 只要有一个操作数为真,则为真。 |
! |
!expression | 逻辑非。 仅当操作数为假时才为真。 |
C++ 逻辑与运算符
逻辑与运算符 && 返回
true- 当且仅当所有操作数都为true。false- 如果一个或多个操作数为false。
&& 运算符的真值表
设 a 和 b 为两个操作数。0 表示假,而 1 表示真。那么,
| a | b | a && b |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
从上面的真值表可以看出,仅当 a 和 b 都为真时,&& 运算符才返回 true。
注意:逻辑与运算符 && 不应与按位与运算符 & 混淆。
示例 1:C++ OR 运算符
// C++ program demonstrating && operator truth table
#include <iostream>
using namespace std;
int main() {
int a = 5;
int b = 9;
// false && false = false
cout << ((a == 0) && (a > b)) << endl;
// false && true = false
cout << ((a == 0) && (a < b)) << endl;
// true && false = false
cout << ((a == 5) && (a > b)) << endl;
// true && true = true
cout << ((a == 5) && (a < b)) << endl;
return 0;
}
输出
0 0 0 1
在此程序中,我们声明并初始化两个 int 变量 a 和 b,分别赋值为 5 和 9。然后我们打印一个逻辑表达式
((a == 0) && (a > b))
这里,a == 0 的计算结果为 false,因为 a 的值为 5。a > b 也为 false,因为 a 的值小于 b。然后我们使用 AND 运算符 && 来组合这两个表达式。
从 && 运算符的真值表可知,false && false(即 0 && 0)的计算结果为 false(0)。这就是我们在输出中得到的结果。
同样,我们计算了另外三个完全演示 && 运算符真值表的表达式。
C++ 逻辑或运算符
逻辑或运算符 || 返回
true- 如果一个或多个操作数为true。false- 当且仅当所有操作数都为false。
|| 运算符的真值表
设 a 和 b 为两个操作数。那么,
| a | b | a || b |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
从上面的真值表可以看出,仅当 a 和 b 都为 false 时,|| 运算符才返回 false。
示例 2:C++ OR 运算符
// C++ program demonstrating || operator truth table
#include <iostream>
using namespace std;
int main() {
int a = 5;
int b = 9;
// false && false = false
cout << ((a == 0) || (a > b)) << endl;
// false && true = true
cout << ((a == 0) || (a < b)) << endl;
// true && false = true
cout << ((a == 5) || (a > b)) << endl;
// true && true = true
cout << ((a == 5) || (a < b)) << endl;
return 0;
}
输出
0 1 1 1
在此程序中,我们声明并初始化两个 int 变量 a 和 b,分别赋值为 5 和 9。然后我们打印一个逻辑表达式
((a == 0) || (a > b))
这里,a == 0 的计算结果为 false,因为 a 的值为 5。a > b 也为 false,因为 a 的值小于 b。然后我们使用 OR 运算符 || 来组合这两个表达式。
从 || 运算符的真值表可知,false || false(即 0 || 0)的计算结果为 false(0)。这就是我们在输出中得到的结果。
同样,我们计算了另外三个完全演示 || 运算符真值表的表达式。
C++ 逻辑非运算符 !
逻辑非运算符 ! 是一个一元运算符,即它只有一个操作数。
当操作数为 false 时,它返回 true;当操作数为 true 时,它返回 false。
! 运算符的真值表
设 a 为一个操作数。那么,
示例 3:C++ ! 运算符
// C++ program demonstrating ! operator truth table
#include <iostream>
using namespace std;
int main() {
int a = 5;
// !false = true
cout << !(a == 0) << endl;
// !true = false
cout << !(a == 5) << endl;
return 0;
}
输出
1 0
在此程序中,我们声明并初始化一个 int 变量 a,值为 5。然后我们打印一个逻辑表达式
!(a == 0)
这里,a == 0 的计算结果为 false,因为 a 的值为 5。然而,我们在 a == 0 上使用了 NOT 运算符 !。由于 a == 0 的计算结果为 false,所以 ! 运算符会反转 a == 0 的结果,最终结果为 true。
同样,表达式 !(a == 5) 的最终结果为 false,因为 a == 5 为 true。