【共读Primer】23.[4.3] 逻辑和关系运算符 Page126

逻辑关系,相信大家都不陌生,所有的逻辑和关系的运算结果只有两种:真(true)或假(false)

逻辑关系的运算符属性通过下表来列出

结合律运算符功能用法
!逻辑非!expr
    
<小于expr < expr
<=小于等于expr <= expr
>大于expr > expr
>=大于等于expr >= expr
    

==相等expr == expr
!=不相等expr != expr
    
&&逻辑与expr && expr
    
||逻辑或expr || expr
    

在所列出的所有逻辑与关系运算符中,优先级从上到下,以空行隔开的优先级相同。

逻辑与运算符(&&):  

  true && true == true ;

  true && false == false;

  false && false == false

逻辑或运算符(||):

  true || true == true;

  true || false == true;

  false || false == false;

这两个运算符有一个共同的特性

短路求值

1. 对于逻辑与运算符来说,当且仅当左侧运算对象为真时才对右侧运算对象求值。

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

这两条规则说起来比较拗口,而且强行记忆的话也比较麻烦,我来给大家说一个简单的方法。

所谓短路求值,它触发的条件只有一条,当右侧的结果无论为真或假都不影响最终逻辑关系结果的时候则会发生短路求值。

先来说第一条:当左侧为true时才会进行右侧运算,反之,当左侧为false时不进行右侧计算,为什么,因为任何一个false都会使逻辑结果为false,所以无论右侧的结果是什么都讲返回false,这时发生短路。

true && true == true ;

true && false == false;

再来说第二条:当左侧为false时才会计算右侧,反之,当左侧为true时不计算右侧,因为无论右侧值是什么,逻辑结果都为true

false || false == false;

false || true == true;

这种特性对我们来说有一点是值的利用的。

for (const auto &s : text)
{
  cout << s;
  // 遇到空字符串或者以句号结束的字符串进行换行
  if(s.empty() || s[s.size() - 1] == '.')
  {
    cout << endl;
  }    
  else
  {
    cout << " ";
  }
}

在上面的代码中我们巧妙的利用短路特性避过了下标越界的错误。

逻辑非运算

逻辑非运算是将逻辑结果取反

! true == false;

! false == true;

其余的逻辑运算符都与数学的逻辑关系类似,这里就不做记录了。

相信大家的数学水平一定比我要高。

 

转载于:https://www.cnblogs.com/ChattyKu/p/9489514.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值