必备技能2.5 关系和逻辑运算符
术语关系运算符和逻辑运算符中,关系是指值和其它的值可能存在的关系,逻辑是指真值和假值关联起来的方式。关系运算符产生的是真值或者假值,因此它们通常和逻辑运算符一起连用。它们也经常被放在一起来讨论的。
关系和逻辑运算符如表格2-4所示。注意:在C++中不相等是用!=来表示的,相等是用==来表示的,两个等号。在C++中,关系或者逻辑表达式的值是布尔类型的。因此,关系或者逻辑表达式的结果要么是true要么是false。
注意:在比较老的编译器中,关系或者逻辑表达式的值为整数0或者1。这种差别只是在学术中差别,因为C++自动地把true转换成1,把false转换成0,反之亦然。
关系运算符的操作数几乎可以使任何类型,只要他们能够进行有意义的比较。逻辑运算符的操作数必须能产生真值true或者假值false。既然任何的非0值都是true,0值是false,这就意味着逻辑运算符可以被用于任何可以产生0值或者非0值的表达式。因此,任何表达式都可以用作逻辑运算符的操作数,结果为void类型的除外。
关系运算符
关系运算符 |
|
运算符 |
含义 |
> |
大于 |
>= |
大于或者等于 |
< |
小于 |
<= |
小于或者等于 |
== |
等于 |
!= |
不等于 |
逻辑运算符 |
|
运算符 |
含义 |
&& |
AND 与 |
|| |
OR 或 |
! |
NOT |
|
|
表格2-4 C++中的关系和逻辑运算符
逻辑运算符是用来支持基本的逻辑运算AND(与),OR(或),NOT(非),其真值表如下:
p |
q |
p AND q |
p OR q |
NOT p |
false |
false |
false |
false |
true |
false |
true |
false |
true |
true |
true |
true |
true |
true |
false |
true |
false |
false |
true |
false |
#include <iostream>
using namespace std;
int main()
{
int i, j;
bool b1, b2;
i = 10;
j = 11;
if(i < j) cout << "i < j/n";
if(i <= j) cout << "i <= j/n";
if(i != j) cout << "i != j/n";
if(i == j) cout << "this won't execute/n";
if(i >= j) cout << "this won't execute/n";
if(i > j) cout << "this won't execute/n";
b1 = true;
b2 = false;
if(b1 && b2) cout << "this won't execute/n";
if(!(b1 && b2)) cout << "!(b1 && b2) is true/n";
if(b1 || b2) cout << "b1 || b2 is true/n";
return 0;
}
程序的输出如下:
i < j
i <= j
i != j
!(b1 && b2) is true
b1 || b2 is true
关系运算符和逻辑运算符的优先级都低于算术运算符。这就意味着表达式10>1+12和10>(1+12)是等效的,其结果自然是false了。
我们可以使用逻辑运算符吧任意多个关系运算连接起来。例如,下面的例子中是吧三个关系运算用逻辑运算符连接起来了。
var > 15 || !(10 < count ) && 3 <= item
下面的表格列出了关系运算符和逻辑运算符的相对优先级:
最高优先级 |
! |
|
> >= < <= |
|
== != |
|
&& |
最低优先级 |
|| |