C++ 初学者指南 第二篇(6)

来源:互联网 发布:raphael.js 下载 编辑:程序博客网 时间:2024/05/01 20:13

必备技能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
     下面的表格列出了关系运算符和逻辑运算符的相对优先级:

最高优先级

!

 

> >= < <=

 

== !=

 

&&

最低优先级

||