• C++
  • 【信息学奥赛】【C++入门】4-逻辑运算符

  • @ 2023-7-4 16:05:04

逻辑运算符,也是用来表示布尔值的运算符。其运算的符号两边的关系的真假。

常见的有三种分别是:

与 用&&表示 或 用 || 表示 非 用 ! 表示,我们在前面的关系运算符中其实已经见到了,不等于用 != 1)与运算,当且仅当两边都为真的时候整个式子的值才为真 例如

① 2>1 && 3>2 。 下面我们列表分析,用1表示真,0表示假。

左边 右边 最终结果

1 1 1

②2<1 && 3>2

左边 右边 最终结果

0 1 0

③2>1 && 3<2

左边 右边 最终结果

1 0 0

2<1 && 3<2

左边 右边 最终结果

0 0 0

观察以上我们把列表统一到一起:

左边 右边 与 &&,结果 1 1 1 0 1 0 1 0 0 0 0 0 如果要在左边和右边中间加一个数学符号等于右边话,我们发现,填上一个乘号使列表成立,

所以我们有时候为了助记也可以把与运算看成是逻辑乘法。

2)或运算,只要两边有一个为真,结果为真。 我们直接用上面的列表

左边 右边 或 ||,结果 1 1 1 0 1 1 1 0 1 0 0 0 如果要在左边和右边中间加一个数学符号等于右边的话,我们发现,填上一个+号勉强使列表成立,只有第一个不太符1+1=2,

但是我们前面讲过非零为真2也为真,所以+号也可以说成立

所以我们有时候为了助记也可以把与运算看成是逻辑加法。

3)非运算,简单的理解就是取反,原来是真的非之后就是假的 例如:!(2<3)的结果就为真

练习: 我们知道闰年的定义

非整百年能被4整除的年份,整百年能被400整除的年份为闰年

现在用y表示年号,让你写一个式子来判断一个年号是不是闰年。

在这里有一个特殊的年号是1900年它不是闰年,我们一会可以把它代到我们的式子里面验证一下。

首先分析一下句子里各个词是什么关系

首先,都好前后是一个只要满足一个就成立的条件,所以是或的关系,可以用符号表示如下:

非整百年能被4整除的年份 || 整百年能被400整除的年份为闰年

然后再看各个半句,都是必须同时满足的情况,那么就是与的关系,进一步深化我们的句子:

非整百年 && 能被4整除的年份 || 整百年 && 能被400整除的年份为闰年

然后,将上面的句子翻译成代码如下

y%100!=0 && y%40 || y%1000 && y%400 ==0 仔细观察上面的式子,我们发现后半部分有点重复,能被400整除的数肯定能被100整除,所以进一步简化:

y%100!=0 && y%4==0 || y%400 ==0 我们将1900代入到这个式子里就会得到如下算式

0 && 1 || 0 这个式子整体为假,所以1900年补充闰年。

在这里要讲一下,与的短路机制。与运算,只要式子里面计算到一个为假,整个式子的结果都为假(0乘以任何数都得0),那么后面的所有式子都不计算了。 上面的那个式子里其实 计算到第一个y%100!=0就发现为假了,后面的y%4==0 || y%400 ==0都不计算(判断)。

0 条评论

目前还没有评论...