第一节 C++编程基础(补充)

六、关系运算和逻辑运算

在程序设计中,不仅仅是单纯的赋值、输入或输出,而在更多的情况下,在程序中是要依赖于一些关系。这些关系的表示,就是关系运算;而这些关系的互相搭配,就形成了逻辑关系的运算。

在各种语言之中,关系运算和逻辑运算都定义了相关的运算符号。

在C++中定义的关系运算符有:

<   (小于)

<=  (小于等于)

>   (大于)

>=  (大于等于)

==  (等于)

!=  (不等于)

前四种运算符优先级相同,后两种运算符优先级相同。但是前四种运算符的优先级比后两句的优先级高。且应该注意,所有的关系运算符的优先级都低于算术运算符,但高于赋值运算符。

【例9】

#include <cstdlib>

#include <iostream>

 

using namespace std;

 

int main(int argc, char *argv[])

{

    int a,b;

    bool c;

    a=10;

    b=20;

    c=a>b;

    cout<<c;

    system("PAUSE");

    return EXIT_SUCCESS;

}

在【例9】中,c是bool类型的变量,而所谓bool类型就是表示是否成立的一个值,分别记做false或true。false表示不成立,true表示成立。而在这道例题中,将会输出0。因为在C++中,跟QBASIC类似,用一个整数表示true或false。只是在QBASIC中,成立用-1表示,不成立用0表示;而在C++中,成立用1表示,不成立用0表示。

关系型运算只能够判断出值和变量之间的关系,而这些关系很多时候是不能够单独存在的。一个条件会分成很多个组成部分,比如数学、语文和英语三门考试,选择单科优秀的学生就需要选择数学成绩在85分以上或语文成绩在85分以上或者英语成绩在85分以上的所有学生。这就需要把三个并列的条件连接在一起,而这种运算就叫做逻辑运算

在C++中定义了三种逻辑运算符,分别表示逻辑关系中的与、或、非。如下列所列:

 

&&代表与

||代表或

!代表非

 

如果用T和F来表示成立与不成立,逻辑与、逻辑或和逻辑非的运算结果如下:

逻辑与

逻辑或

逻辑非

T&&T=T

T&&F=F

F&&T=F

F&&F=F

T||T=T

T||F=T

F||T=T

F||F=F

!T=F

!F=T

 

 

C++中的与或非的字符定义的非常形象,由两个字符组成的“与”和“或”是双边运算,代表左右两边运算的结果。而非字符是一个字符组成,代表只对后面的运算内容取非运算。在使用中要特别注意,一个字符的“&”和“|”符号都有其他的含义,所以,很多情况下,如果误写成一个字符,DEV-C++的编译环境也不会报错,造成编程中的问题。

【例10】

#include <cstdlib>

#include <iostream>

 

using namespace std;

 

int main(int argc, char *argv[])

{

    int a,b,c;

    bool yi,er,san;

    a=95;

    b=85;

    c=80;

    yi=a>90|| b>90|| c>90;

    er=a>90&&b>90&&c>90;

    san=a>80&&a<100||b>80&&b<100;

    cout<<yi<<endl;

    cout<<er<<endl;

    cout<<san<<endl;

    system("PAUSE");

    return EXIT_SUCCESS;

}

在【例10】中,对变量yi,er,san进行了复制,他们得到的值都是对于a,b,c这三个变量值满足某种条件的综合。正如前面的描述,成立用1表示,不成立用0表示。yi的条件是a大于90或b>90或c>90,说明这三个变量中只要有一个大于90即可满足条件,因为a的值为95,满足这个条件,所以yi的值为1;而er的条件为a大于90并且b大于90并且c大于90,很明显b和c的值都不满足这个条件,所以得到的结果是不成立也就是0;最后一个条件更为复杂,因为这里面运算优先级别最低的是||(逻辑或),所以我们可以以这里为分界点。它左边的要求是,a大于80并且a小于100这个条件是满足的;而它右边的要求是b大于80并且小于100,很明显这也是满足的;所以或运算的两边均为成立情况,所以运算的结果也为成立。

猜你喜欢

转载自blog.csdn.net/fatship/article/details/85244412