当前位置: 首页 > news >正文

C#入门(12)逻辑运算符

前言

逻辑运算符是用于连接、改变和比较逻辑值的运算符。常见的逻辑运算符包括与(and)、或(or)和非(not)运算符。

  1. 与运算符(and):表示当两个逻辑值都为真时,结果为真,否则为假。用符号“&&”表示,例如:A && B。

  2. 或运算符(or):表示当两个逻辑值中至少有一个为真时,结果为真,否则为假。用符号“||”表示,例如:A || B。

  3. 非运算符(not):表示对逻辑值进行取反操作,即将真变为假,假变为真。用符号“!”表示,例如:!A。

逻辑运算符可以用于连接多个逻辑表达式,形成复合条件判断。逻辑运算符的优先级通常按照“非”运算符最高,其次是“与”运算符,最后是“或”运算符。

逻辑运算符在编程中经常用于控制流程和条件判断。它们可以帮助程序根据不同的条件执行不同的代码块,或者判断某些条件是否满足。

tips:逻辑运算符优先级地狱条件运算符和算术运算符

1.混合使用时

!>&&>||

这个优先级希望大家能够牢记,后续写程序也回经常潜意识地用到,避免大家在未来的程序生涯犯下很低级的错误。

2.逻辑运算符短路规则

逻辑运算符短路规则是指在使用逻辑运算符进行逻辑运算时,如果能够根据前面的条件判断出整个表达式的结果,就不再继续计算后面的条件。

具体来说,对于逻辑与运算符(&&):

  • 如果第一个条件为假(false),整个表达式的结果必定为假(false),不再计算后面的条件,直接返回假;
  • 如果第一个条件为真(true),继续计算后面的条件,直到所有条件都为真,整个表达式的结果才为真(true)。

对于逻辑或运算符(||):

  • 如果第一个条件为真(true),整个表达式的结果必定为真(true),不再计算后面的条件,直接返回真;
  • 如果第一个条件为假(false),继续计算后面的条件,直到所有条件都为假,整个表达式的结果才为假(false)。

逻辑运算符短路规则的应用可以提高程序的效率,避免不必要的计算。

3.位运算符

在进行位运算的讲解之前我们需要了解一下计算机的二进制的工作情况,才方便大家的后续理解。

补充:

二进制是一种计算机系统中常用的数字表示方法,使用只有两个值的数制来表示各种信息。这两个值通常被表示为0和1。在计算机系统中,每个数字位都是由电子开关(如晶体管)控制的,开或者关来表示0或者1。

二进制是一种位置计数法,与我们平常使用的十进制不同。在十进制中,每一位的权重是10的幂次方,从右到左依次递增,例如个位的权重为10^0,十位的权重为10^1,百位的权重为10^2等。而在二进制中,每一位的权重是2的幂次方,从右到左依次递增,例如个位的权重为2^0,十位的权重为2^1,百位的权重为2^2等。

二进制可用于表示数字、字符、图像、音频和视频等各种数据类型。计算机内部所有的数据都是以二进制的形式存储和处理的。二进制可以通过数字逻辑电路和布尔运算进行计算和操作。它是计算机科学中非常基础和重要的概念。

a.位与&

规则:连接两个数值进行位运算,将数值转为二进制,对位运算,有零则零

tips:多位应从左到右以此计算

举例:

int a=1;//二进制001
int b=5;//二进制101
int c=a&b;
Console.Writeline(c);///打印结果为001即为1

那你可能会疑问了,这个东西在实际开发中有什么用吗,我就游戏开发来说,因为博主更多是进行游戏相关的讲解。

如果我们用一个变量来储存人物buff是不是就可以用这种方式来进行增减。(配合枚举)

我想你只要想一下就能明白这个变量带来的好处。如果感兴趣可以去了解一下相关的文章。

b.位或|

规则:连接两个数值进行位运算,将数值转为二进制,对位运算,有一则一

博主就不进行举例了,建议大家可以自己去尝试一下。

c.异或^

规则:连接两个数值进行位运算,将数值转为二进制,对位运算,相同为0,不同为1

理解的方式其实很简单,相同则非,不同则是

如果有学过数电的小伙伴想毕对这个概念是比较清楚的。

d.位取反~

规则:写在数值掐面,将数值转为二进制,对位运算,0变1,1变0,补码为取加1.

以下是一个位取反的例子:

int number = 5; // 二进制表示为 0000 0101
int invertedNumber = ~number; // 取反操作,结果为 1111 1010Console.WriteLine(invertedNumber); // 输出结果为 -6

在这个例子中,我们首先定义了一个整数变量 number,其值为 5。然后,通过使用位取反操作符 ~number 进行位取反操作,得到了变量 invertedNumber 的值。最后,我们将 invertedNumber 输出到控制台,结果为 -6。

值得注意的是,位取反操作将二进制数的每个位都取反,即 0 变为 1,1 变为 0。在上面的例子中,由于使用了 Int32 数据类型,其表示为有符号的 32 位二进制数。因此,在取反操作之后,最高位的 1 表示负数,其余位表示取反操作的结果。

e.左移<<,右移>>

规则:让一个数的二进制进行左移右移,左移即为就在右侧加几个零,右移同理。

int number = 5; // 101int shiftedNumber = number << 2; // 左移2位10100Console.WriteLine(shiftedNumber); // 输出结果为20=16+4

4.三目运算符

基本语法:一bool,两内容,两个符号

bool(类型(表达式))?类型为真返回内容:类型为假返回内容

看到这个你可能还觉得有点抽象对吧,没事,我们继续用例子讲解,很快你就能get到这个东西。

就简单来求一个两数谁更大吧:

int x = 10; 
int y = 5;int bigger = (x > y) ? x : y;

根据赋值,那么就是前面的bool表达式为真,则输出的事x,如果y的值更大,那么bool表达式就为假,就应该输出y。

三目运算符可以简便很多代码,是一个很实用的小技巧

总结

通过本节的学习,我们就学习完了逻辑运算符。

接下来我们就会正式进入判断和循环当中,其实你不难发现,我们的三目运算符其实就是跟判断有关的。

当我们讲完判断和循环后,我们就算正式成为一个入门的小程序猿了。

你也可以开发一定简单的小程序,用计算机来算算数学题什么。

但是很显然这对于一门编程语言来说也只是冰山一角,我们仍要继续脚踏实地,好好对待每一个知识点。

共勉。


http://www.mrgr.cn/news/13844.html

相关文章:

  • openEuler安装Docker和踩坑分析
  • 【经验分享】f(x)的一个原函数怎么求?
  • Python + Playwright(16):处理HTTPS错误
  • redis | 认识非关系数据库Redis的位图数据类型
  • 浅谈Sql Server 增删改查
  • 石墨文档数据:合法抓取指南
  • 基于深度学习的生产流程自动化
  • Flask 安装和应用
  • [Pyplot]设置图中字体为TimesNewRoman
  • Kubernetes中的Controller Manager:自动化集群管理的核心引擎
  • 回归预测的相关评价指标
  • 使用WireShark的tshark命令,在window系统Cmd命令行抓包(附环境变量的设置)
  • 【C++】单元测试覆盖率工具lcov的使用
  • 第三十九篇-TeslaP40+CosyVoice-安装
  • 工厂模式与策略模式的较量
  • 高职院校人工智能训练师边缘计算实训室建设方案
  • 临床预测模型的影响力研究之低血糖预警
  • 如何使用 Qt C++ 基于 FFmpeg 开发本地视频播放器
  • 深入探索 Nginx 的 URL 重写与位置匹配
  • Linux Shell脚本入门:参数符号$0,$1,$#,$@,$$与模式替换符^^,,的实用手册