在 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
。