C++ 逻辑表达式&& || !

本文详细介绍了C++中三种逻辑运算符的使用方法及特点:逻辑OR(||)、逻辑AND(&&)和逻辑NOT(!)。通过具体的例子说明了这些运算符的优先级、求值顺序以及短路特性。

C++提供了3种逻辑运算符,来组合或修改已有的表达式:逻辑OR(||)、逻辑AND(&&)和逻辑NOT(!)


#####################################################


逻辑OR运算符的优先级比关系运算符低,故

5 == 5 || 5 == 9 等价于 (5 == 5) || (5 == 9)

C++规定,||运算符是个顺序点(sequence point)。也就是说,先修改左侧的值,再对右侧的值进行判定。另外,如果左侧的表达式为true,则C++将不会去判定右侧的表达式,因为只要一个表达式为true,则整个逻辑表达式为true

 

Expr1||expr2的值

 

 

Expr1 == true

Exptr1 == false

Expr2 == true

True

true

Expr2 == false

true

False


####################################################


逻辑AND运算符(&&),是将两个表达式组合成一个表达式。仅当原来的两个表达式都为true时,得到的表达式的值才为true

由于&&的优先级低于关系运算符,故

5 == 5 && 4 ==4 等价于 (5 == 5) && (4 == 4)

和||运算符一样,&&运算符也是顺序点,因此将首先判定左侧,并且在右侧被判定之前产生所有的副作用。如果左侧为false,则整个逻辑表达式必定为false,在这种情况下,C++将不会再对右侧进行判定

 

Expr1 && expr2的值

 

 

Expr1 == true

Expr1 == false

Expr2 == true

True

false

Expr2 == false

false

False



#################################################


!运算符将它后面的表达式的真值取反

例如,如果C-风格字符串s1和s2不同,则strcmp(s1, s2)将返回非零(true)值,否则返回0。这意味着如果这两个字符串相同,则!strcmp(s1, s2)为true


!运算符的优先级高于所有的关系运算符和算术运算符。因此,要对表达式求反,必须用括号将其括其。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值