关系操作符和逻辑操作符

关系操作符和逻辑操作符使用算术或指针类型的操作数,并返回bool 类型的值。

操作符

功能

用法

!

logical NOT(逻辑非)

!expr

<

less than(小于)

expr < expr

<=

less than or equal(小于等于)

expr <= expr

>

greater than(大于)

expr > expr

>=

greater than or equal(大于等于)

expr >= expr

==

equality(相等)

expr == expr

!=

inequality(不等)

expr != expr

&&

logical AND(逻辑与)

expr && expr

||

logical OR(逻辑或)

expr || expr

逻辑与、逻辑或操作符

expr1 && expr2 // logical AND
expr1 || expr2 // logical OR

对于&&运算符当且仅当两个运算对象都为真时结果为真;

对于逻辑||运算符,只要两个运算对象中的一个为真,结果就为真。

逻辑与和逻辑或操作符总是先计算其左操作数,然后再计算其右操作数。只有在仅靠左操作数的值无法确定该逻辑表达式的结果时, 才会求解其右操作数。 我们常常称这种求值策略为“短路求值(short-circuit evaluation)”。

对于逻辑与&&来说,当且仅当左侧运算对象为真时才对右侧对象求值;

对于逻辑或||来说,当且仅当左侧运算对象为假时才对右侧对象求值。

逻辑非操作符

逻辑非操作符(!)将其操作数视为条件表达式,产生与其操作数值相反的条件值。

关系操作符

关系操作符(<、<=、>、<=)具有左结合特性。事实上,由于关系操作符返回 bool 类型的结果,因此很少使用其左结合特性。如果把多个关系操作符串接起来使用,结果往往出乎预料:

if (i < j < k) { /* ... */ }

这种写法只要 k 大于 1,上述表达式的值就为 true。这是因为第二个小于操作符的左操作数是第一个小于操作符的结果:true 或 false。也就是,该条件将 k 与整数 0 或 1 做比较。为了实现我们想要的条件检验,应重写上述表达式如下:

if (i < j && j < k) { /* ... */ }

相等测试与 bool 字面值

如果想测试一个算术对象或指针对象的真值,最直接的方法就是将其作为if语句的条件:

if(val)
if(!val)

有时会试图将上面的真值测试写成:

if (val == true)

但这种写法存在两个问题:

首先,与之前的代码相比,这种写法较长;

其次,如果val不是布尔值,这样的比较将失去原来的意义,比较之前会将true转换成val类型,也就是说,如果val不是布尔值,则代码可以改写为:

if(val==1)

转载于:https://www.cnblogs.com/xiaojianliu/articles/8970588.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值