C++ 初学者指南 第二篇(6)
2009-12-29 21:16
295 查看
必备技能2.5 关系和逻辑运算符
术语关系运算符和逻辑运算符中,关系是指值和其它的值可能存在的关系,逻辑是指真值和假值关联起来的方式。关系运算符产生的是真值或者假值,因此它们通常和逻辑运算符一起连用。它们也经常被放在一起来讨论的。
关系和逻辑运算符如表格2-4所示。注意:在C++中不相等是用!=来表示的,相等是用==来表示的,两个等号。在C++中,关系或者逻辑表达式的值是布尔类型的。因此,关系或者逻辑表达式的结果要么是true要么是false。
注意:在比较老的编译器中,关系或者逻辑表达式的值为整数0或者1。这种差别只是在学术中差别,因为C++自动地把true转换成1,把false转换成0,反之亦然。
关系运算符的操作数几乎可以使任何类型,只要他们能够进行有意义的比较。逻辑运算符的操作数必须能产生真值true或者假值false。既然任何的非0值都是true,0值是false,这就意味着逻辑运算符可以被用于任何可以产生0值或者非0值的表达式。因此,任何表达式都可以用作逻辑运算符的操作数,结果为void类型的除外。
关系运算符
表格2-4 C++中的关系和逻辑运算符
逻辑运算符是用来支持基本的逻辑运算AND(与),OR(或),NOT(非),其真值表如下:
下面的程序演示了几种关系运算符和逻辑运算符。
#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
下面的表格列出了关系运算符和逻辑运算符的相对优先级:
术语关系运算符和逻辑运算符中,关系是指值和其它的值可能存在的关系,逻辑是指真值和假值关联起来的方式。关系运算符产生的是真值或者假值,因此它们通常和逻辑运算符一起连用。它们也经常被放在一起来讨论的。
关系和逻辑运算符如表格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 |
逻辑运算符是用来支持基本的逻辑运算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
下面的表格列出了关系运算符和逻辑运算符的相对优先级:
最高优先级 | ! |
> >= < <= | |
== != | |
&& | |
最低优先级 | || |
相关文章推荐
- C++ 初学者指南 第二篇(11)
- C++ 初学者指南 第二篇(12)
- C++ 初学者指南 第二篇(3)
- C++ 初学者指南 第二篇(3)实字(即常量)
- C++ 初学者指南 第二篇(8)
- C++ 初学者指南 第二篇(14)
- C++ 初学者指南 第二篇(13)
- C++ 初学者指南 第二篇(4)
- C++ 初学者指南 第二篇(2)
- C++ 初学者指南 第二篇(9)
- C++ 初学者指南 第二篇(5)
- C++ 初学者指南 第二篇(10)
- C++ 初学者指南 第二篇(15)
- C++ 初学者指南 第二篇(12)强制类型转换
- C++ 初学者指南 第二篇(7)
- C++ 初学者指南 第二篇(1)
- C++ 初学者指南 第四篇(9)
- C++ 初学者指南 第五篇(9)
- C++ 初学者指南 第六篇(10)
- C++ 初学者指南 第三篇(7)