首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【小雨学编程之C#】14 表达式(续)逻辑运算符

之前我们介绍了运算表达式,知道了运算表达式可以给我们一个运算后的具体值。

我们也介绍了条件表达式,知道了条件表达式可以给我们一个成立/不成立的结果,也就是true/false。

本节我们在条件表达式的基础上,介绍逻辑表达式。

1、基础知识

这里我们简单回顾一下条件表达式:

这时我们需要观察,无论我们使用算数运算符、赋值运算符还是条件运算符的时候,对应的表达式要干啥取决于表达式中的运算符,但是操作的却是运算符两边的操作数。

之前我们在使用操作数的时候,都是确定的内容,要么是数字,要么是对应的变量。

但是当我们使用逻辑运算符的时候,对应的操作数的位置,却是表达式。

逻辑运算符有三个:

&& 与

|| 或

! 非

我们使用逻辑表达式的&&和||的结构是:(表达式1)逻辑运算符(表达式2)

比如:

而这里逻辑运算符的意义是:

&& 与:当运算符左右同时成立的时候,整体表达式成立

|| 或:当运算符左右两边,只要有一边成立,整体表达式成立

我们看上面的例子:其中b>a成立但是a==b不成立,那么整个表达式便是(成立&&不成立),那么最后整体的结果当然是不成立(false)喽。

我们将代码简单修改:

在这里,我们将&&更换成了||,这时整体的结果是成立,这是为什么呢?

因为现在的表达式是(成立||不成立),通过||的定义我们知道,只要这个运算符左右两边只要有一边成立,那么整体就成立。

我们再看两个例子:

其中,第一个例子中整体表达式意思是(不成立&&不成立),那么依据&&的意思,整体表达式是不成立的。

第二个例子中整体表达式的意思是(不成立||不成立),那么依据||的意思,整体表达式是不成立的。

那么接下来我们来看第三个逻辑运算符:

! 非:否定表达式

这个逻辑运算符的操作数只有一个,那么否定表达式的意思便是,如果操作数位置上的表达式是成立的,那么整体表达式就是不成立的,如果操作数位置上的表达式是不成立的,那么整体表达式就是成立的。

我们看代码:

这时我们明显知道,b是大于a的,那么这个时候,b

2、基础引申,连续比较

现在我们知道了,逻辑表达式,就是先判断表达式两边的操作数的状态,然后给出整体状态。

那么我们看如下代码:

那么这两个例子是怎么回事?

我们逐一分析:

第一个例子中,我们通过整理看到(不成立&&不成立&&成立),通过&&的意义我们从左向右分析结果,((不成立&&不成立)&&成立)因为&&操作的是两边的操作数,那我们先看前面的,我们这时将(不成立&&不成立)看成一个整体,这个整体结果是不成立,然后我们将结果带入后面的运算,就变成了(不成立&&成立),这个结果是不成立,那么整体(不成立&&不成立&&成立)就是不成立喽。

第二个例子,我们也用同样的分析方式,(不成立||不成立||成立),这时先将前面的不成立||不成立看成整体,这个整体是不成立,然后将这个结果带入后面,就是(不成立||成立),这时我们依据||的意思得到的结果是成立,那么整体(不成立||不成立||成立)就是成立喽。

我们用这两个例子来说明,逻辑表达式是可以连续的,但是遇到连续的情况的时候,因为我们知道这时表达式是操作运算符左右两边的操作数的,那么我们可以在分析的时候,将不同的部分看成不同的整体,进而通过拆分、合并分析的方式进行代码分析。

3、基础引申,利用运算符特点进行运算

我们看代码:

这时我们发现,咦,为啥age的结果不一样?

在这里,我们需要特别关注一下||,它的定义是只要两边有一边是true,那么整体返回true。

那么只要有一边,就是说,一旦程序发现||的左边是true那么直接判定整体为true,就不管||是什么情况了。

那么我们细化第一个例子:

(day < birthday) || (++age > 18)带入具体内容为,(318)

细化第二个例子,便是(3>2)||无需判断

那么就是说,第一个例子中,我们判断||左边不成立,于是运行||的内容,而右边的内容中有自增运算符,所以右边进行了一次运算。

但是在第二个例子中||左边成立,所以直接判定整体成立,就不用管右边了,所以右边没有执行。

这里,我们发现了||运行的特殊之处,但是这有什么用呢?

比如,我们将上述两个例子,变成具体的实际程序需求:一个人的年龄18岁,他的生日是本月2号,我们的要求是用程序判断当前日期,如果当前没有到2号,他仍然是18岁,如果当前超过2号,那么这个人就长了一岁,变成了19岁。

这时我们在看看上面的例子,是不是有种恍然大明白的感觉!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210301A0EZ0Z00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券