首页 理论教育 C++语言中学版:逻辑运算及布尔表达式

C++语言中学版:逻辑运算及布尔表达式

时间:2023-08-13 理论教育 版权反馈
【摘要】:布尔表达式是能够判断真、假的逻辑表达式,是进行选择的依据。就是一个布尔表达式。逻辑运算符有3个:&&,||,!12<9&&0>1值为false,因为两个表达式的值都为false。12>1||8>9值为true,因为第一个表达式的值为true。的优先级高于所有关系运算符和算术运算符,所以对关系表达式取反,表达式必须用括号括起来。在解决实际问题时,经常需要用上述3种逻辑运算符把多个关系表达式连接起来,写成复杂的布尔表达式作为条件表达式。

C++语言中学版:逻辑运算及布尔表达式

布尔表达式是能够判断真、假的逻辑表达式,是进行选择的依据。比如我们经常要判断用户输入的字符a是不是数字,写成表达式就是(a>='0'&&a<='9')。当a是0到9之间的数字时,这个表达式的值是true,否则为false。

(a>='0'&&a<='9')就是一个布尔表达式。这个布尔表达式包括3个部分:(a>='0'),&&,(a<='9')。其中(a>='0')和(a<='9')是关系表达式,&&是逻辑运算符。

当我们面临选择时,可供判断的条件往往不止一个,这就要综合各个条件做出全面的分析,从而做出准确的判断。C++中用逻辑运算符可以把两个或多个关系表达式连接起来,形成布尔表达式,进行比较复杂的判断。

逻辑运算符有3个:&&(and),||(or),!(not)。其中,“!(not)”的优先级最高,其次是“&&(and)”,最后是“||(or)”。

1.逻辑与:&&(and)

学校里期末要评选三好学生,要当选三好学生必须同时满足三个条件:学习成绩好、身体好、品德好。C++中就可以写成:(学习成绩好)&&(身体好)&&(品德好)。

用&&连接两个关系表达式时,&&左右两个表达式的值必须都为true,整个表达式的值才为true,否则为false。

例如:

3>1&&8>5值为true,因为两个表达式的值都为true。

3>9&&7>3值为false,因为第一个表达式的值为false。

12<9&&0>1值为false,因为两个表达式的值都为false。

12>1&&8>9值为false,因为第二个表达式的值为false。

书写上述表达式时,由于&&的优先级比关系运算符的优先级低,所以不需要加括号

注意:&&常用来设定取值范围,比如x>0&&x<10,此时要避免写成0<x<10。如写成0<x<10,编译器不会报错,但是0<x<10相当于(0<x)<10,0<x的值不是1就是0,永远小于10,所以0<x<10的值永远为true。

2.逻辑或:||(or)

Internet改变了人们的学习方式,人们经常在网上查资料,但有时所要的网上资料不是免费的,需要有下载券,或者是VIP。也就是说,是VIP可以下载,有下载券也可以下载,如果二者都不是,就不能下载了。用C++语言可以写成:(是VIP) ||(有下载券)。

用“||”连接两个关系表达式时,“||”左右两个表达式只要有一个值为true,整个表达式的值就为true。只有当两个表达式的值都为false时,整个表达式的值才为false。

例如:(www.xing528.com)

3>1||8>5值为true,因为两个表达式的值都为true。

3>9||7>3值为true,因为第二个表达式的值为true。

12>1||8>9值为true,因为第一个表达式的值为true。

12<9||0>1值为false,因为两个表达式的值都为false。

在书写上述表达式时,由于“||”的优先级也比关系运算符的优先级低,所以不需要加括号。

3.逻辑非:!(not)

小明不喜欢下雨天,因为下雨天不能出去玩。而只要天不下雨,爷爷就带他去野外尽情地玩。“天不下雨”这个条件用C++语言可以写成:!(下雨)。

!(关系表达式)相当于对关系表达式取反:当关系表达式的值为true时,!(关系表达式)的值为false,当关系表达式的值为false时,!(关系表达式)的值为true。

例如:

!(5>6)的值为true,因为(5>6)的值为false。

!(0<5)的值为false,因为(0<5)的值为true。

在书写上述表达式时,由于“!”的优先级高于所有关系运算符和算术运算符,所以对关系表达式取反,表达式必须用括号括起来。如果写成(!x>9),则先算“!x”的值为true或false,转换为整数是1或0,所以(!x>9)的值永远为false。

在解决实际问题时,经常需要用上述3种逻辑运算符把多个关系表达式连接起来,写成复杂的布尔表达式作为条件表达式。

例如:

(1)适宜早起晨练的温度是25℃到30℃之间,判断输入温度t是否适合晨练的表达式要写成:t>=25&&t<=30。

(2)判断输入的年份y是不是闰年。闰年的条件是:①普通年能被4整除且不能被100整除的为闰年(如2004年就是闰年,2019年不是闰年)。②世纪年能被400整除的是闰年(如2000年是闰年,1900年不是闰年)。

上述条件写成布尔表达式就是:(y%4==0&&y%100!=0) ||(y%400==0)

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈