草庐IT

关系运算符与逻辑运算符及其表达式,运算符的优先级

源丁编程 2023-04-13 原文

关系运算符

C#中的关系运算符(又称为比较运算符) 作用是对运算符两侧的操作数(包括变量,表达式等)进行比较,得到一个比较后的结果,其结果是布尔型只有true或false。

常用做选择或循环结构中的条件判断语句中,用于控制其是否继续执行流程中的代码。

关系运算符共有6种:>(大于)<(小于)==(等于)!=(不等于)>=(大于等于)<=(小于等于)。

关系运算符使用规则:运算符两侧操作数的数据类型(包括类型转换)必须一样。

在基本数据类型中可以使用的关系运算符如下:

1、在数值类型数据中以比较数值的大小得到关系运算的结果值

假设变量 A 的值为 1 ,变量 B 的值为 9 使用关系运算符可得以下结果。

运算符

说明

表达式

结果

>

如果运算符左侧操作数大于右侧,结果为真

A > B

假(false)

<

如果运算符左侧操作数小于右侧,结果为真

A < B

真(true)

==

如果运算符左侧操作数等于右侧,结果为真

A == B

假(false)

!=

如果运算符左侧操作数不等于右侧,结果为真

A != B

真(true)

>=

如果运算符左侧操作数大于等于右侧,结果为真

A >= B

假(false)

<=

如果运算符左侧操作数小于等于右侧,结果为真

A <= B

真(true)

示例:代码实现命题1) 猫(3kg)比狗(10kg)质量轻 2) 鸡(2kg)与鸭(2kg)质量一样重。

数值类型比较结果

2、在其他非数值类型(如string)的数据中一般只使用==与!=关系运算符

非数值类型比较结果

在非数值类型中有个特殊的类型字符型(char)可以使用所有关系运算符。

3、在字符型数据中以比较字符ASCII码值的大小得到关系运算的结果值

常见字符种类大小排序:空格<数字(0~9)<大写字母(A~Z)<小写字母(a~z)<汉字。

逻辑运算符(条件)

逻辑运算符:运算符一般连接两侧的操作数必须是布尔类型的值或表达式求解的值必须是布尔类型。

逻辑运算符主要有:&&(逻辑与) ||(逻辑或) !(逻辑非)。

逻辑运算表达式:就是使用连接运算符连接的式子 如 表达式1 && 表达式2。

1、&&(逻辑与) 连接两个表达式的值全部为真,结果为真,其余为假

表达式1

表达式2

表达式1 && 表达式2

结果

true

true

true && true

true

true

false

true && false

false

false

true

false && true

false

false

false

false && false

false

示例:1编写判断年份(year)是否为闰年的表达式 2)通过此表达式输入的年份是否为闰年。

闰年判断条件:能被4整除但不能被100整除。

//编写闰年表达式的思路
//1)能被4整除
year%4==0;//表示可以被4整除的关系表达式
//2)但不能被100整除
year%100!=0;//不能被100整除的关系表达式
//因为是两个条件必须满足,因此使用逻辑与进行组合
year%4==0 && year%100!=0;
//代码实现
bool leapYear = year % 4 == 0 && year % 100 != 0;
bool leapYear = (year % 4 == 0) && (year % 100 != 0);//推荐使用加小括号方式

闰年逻辑表达式示例

2、||(逻辑或) 连接两个表达式中有一个为真,结果为真

表达式1

表达式2

表达式1 || 表达式2

结果

true

true

true || true

true

true

false

true || false

true

false

true

false || true

true

false

false

false || false

false

示例:将判断闰年的条件修改为:

  1. 能被4整除但不能被100整除。
  2. 可以被400整除。

//编写闰年表达式的思路
//1)条件1上面编写过不再赘述
//2)可以被400整除
year%400==0;//可以被400整除
//3)可以理解为:能被4整除但不能被100整除或者可以被400整除
//因此判断前两个条件为一个整体的与后一个条件的关系为逻辑或
//正确表达式 使用小括号将条件1作为整体与条件2进行逻辑或比较
bool leapYear=((year % 4 == 0) && (year % 100 != 0))||(year%400==0);

闰年的多条件逻辑表达式

3、逻辑非(单目操作) 在表达式前面 表示取反

表达式

!表达式

结果

true

!true

false

false

!false

true

运算符的优先级

C#中优先级的作用影响到一个表达式如何计算及最终结果。

下表将按运算符优先级从高到低列出各个已学的运算符在表达式中运算等级,较高优先级的运算符会优先被计算。

等级

运算符名称

运算符

1

一元算术(后置)

x++ x--

2

二元逻辑(逻辑非)

!

3

一元算术(前置)

++x --x

4

二元算术(乘除取余)

* / %

5

二元算术(加减)

+ -

6

二元关系运算符

> < >= <=

7

二元关系运算符

== !=

8

二元逻辑与

&&

9

二元逻辑或

||

10

二元赋值运算符

*= /= %= += -= =

未加小括号提升优先级,首先按照上表的从高到低进行运算,所有二元运算符则从左到右进行运算。

有关关系运算符与逻辑运算符及其表达式,运算符的优先级的更多相关文章

  1. ruby 正则表达式 - 如何替换字符串中匹配项的第 n 个实例 - 2

    在我的应用程序中,我需要能够找到所有数字子字符串,然后扫描每个子字符串,找到第一个匹配范围(例如5到15之间)的子字符串,并将该实例替换为另一个字符串“X”。我的测试字符串s="1foo100bar10gee1"我的初始模式是1个或多个数字的任何字符串,例如,re=Regexp.new(/\d+/)matches=s.scan(re)给出["1","100","10","1"]如果我想用“X”替换第N个匹配项,并且只替换第N个匹配项,我该怎么做?例如,如果我想替换第三个匹配项“10”(匹配项[2]),我不能只说s[matches[2]]="X"因为它做了两次替换“1fooX0barXg

  2. ruby - 触发器 ruby​​ 中 3 点范围运算符和 2 点范围运算符的区别 - 2

    请帮助我理解范围运算符...和..之间的区别,作为Ruby中使用的“触发器”。这是PragmaticProgrammersguidetoRuby中的一个示例:a=(11..20).collect{|i|(i%4==0)..(i%3==0)?i:nil}返回:[nil,12,nil,nil,nil,16,17,18,nil,20]还有:a=(11..20).collect{|i|(i%4==0)...(i%3==0)?i:nil}返回:[nil,12,13,14,15,16,17,18,nil,20] 最佳答案 触发器(又名f/f)是

  3. ruby - Rails 关联 - 同一个类的多个 has_one 关系 - 2

    我的问题的一个例子是体育游戏。一场体育比赛有两支球队,一支主队和一支客队。我的事件记录模型如下:classTeam"Team"has_one:away_team,:class_name=>"Team"end我希望能够通过游戏访问一个团队,例如:Game.find(1).home_team但我收到一个单元化常量错误:Game::team。谁能告诉我我做错了什么?谢谢, 最佳答案 如果Gamehas_one:team那么Rails假设您的teams表有一个game_id列。不过,您想要的是games表有一个team_id列,在这种情况下

  4. ruby - 正则表达式将非英文字母匹配为非单词字符 - 2

    @raw_array[i]=~/[\W]/非常简单的正则表达式。当我用一些非拉丁字母(具体来说是俄语)尝试时,条件是错误的。我能用它做什么? 最佳答案 @raw_array[i]=~/[\p{L}]/使用西里尔字符进行测试。引用:http://www.regular-expressions.info/unicode.html#prop 关于ruby-正则表达式将非英文字母匹配为非单词字符,我们在StackOverflow上找到一个类似的问题: https://

  5. [工业相机] 分辨率、精度和公差之间的关系 - 2

    📢博客主页:https://blog.csdn.net/weixin_43197380📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!📢本文由Loewen丶原创,首发于CSDN,转载注明出处🙉📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨文章预览:一.分辨率(Resolution)1、工业相机的分辨率是如何定义的?2、工业相机的分辨率是如何选择的?二.精度(Accuracy)1、像素精度(PixelAccuracy)2、定位精度和重复定位精度(RepeatPrecision)三.公差(Tolerance)四.课后作业(Post-ClassExercises)视觉行业的初学者,甚至是做了1~2年

  6. ruby - 正则表达式在哪个位置失败? - 2

    我需要一个非常简单的字符串验证器来显示第一个符号与所需格式不对应的位置。我想使用正则表达式,但在这种情况下,我必须找到与表达式相对应的字符串停止的位置,但我找不到可以做到这一点的方法。(这一定是一种相当简单的方法……也许没有?)例如,如果我有正则表达式:/^Q+E+R+$/带字符串:"QQQQEEE2ER"期望的结果应该是7 最佳答案 一个想法:你可以做的是标记你的模式并用可选的嵌套捕获组编写它:^(Q+(E+(R+($)?)?)?)?然后你只需要计算你获得的捕获组的数量就可以知道正则表达式引擎在模式中停止的位置,你可以确定匹配结束

  7. ruby - 带括号和 splat 运算符的并行赋值 - 2

    我明白了:x,(y,z)=1,*[2,3]x#=>1y#=>2z#=>nil我想知道为什么z的值为nil。 最佳答案 x,(y,z)=1,*[2,3]右侧的splat*是内联扩展的,所以它等同于:x,(y,z)=1,2,3左边带括号的列表被视为嵌套赋值,所以它等价于:x=1y,z=23被丢弃,而z被分配给nil。 关于ruby-带括号和splat运算符的并行赋值,我们在StackOverflow上找到一个类似的问题: https://stackoverflow

  8. ruby - 有没有办法从 ruby​​ case 语句中访问表达式? - 2

    我想从then子句中访问c​​ase语句表达式,即food="cheese"casefoodwhen"dip"then"carrotsticks"when"cheese"then"#{expr}crackers"else"mayo"end在这种情况下,expr是食物的当前值(value)。在这种情况下,我知道,我可以简单地访问变量food,但是在某些情况下,该值可能无法再访问(array.shift等)。除了将expr移出到局部变量然后访问它之外,是否有直接访问caseexpr值的方法?罗亚附注我知道这个具体示例很简单,只是一个示例场景。 最佳答案

  9. ruby - 正则表达式 - 排除一个字符 - 2

    这是一个例子:s="abcd+subtext@example.com"s.match(/+[^@]*/)Result=>"+subtext"问题是,我不想在其中包含“+”。我希望结果是“潜台词”,没有+ 最佳答案 您可以在正则表达式中使用括号来创建匹配组:s="abcd+subtext@example.com"s=~/\+([^@]*)/&&$1=>"subtext" 关于ruby-正则表达式-排除一个字符,我们在StackOverflow上找到一个类似的问题:

  10. ruby - 如何遍历 Ruby 中所有正则表达式匹配的字符串? - 2

    我们有一个字符串:“”这个正则表达式://i如何从当前字符串中获取所有匹配项? 最佳答案 "".scan(//)参见scan在ruby​​-docs上 关于ruby-如何遍历Ruby中所有正则表达式匹配的字符串?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6857852/

随机推荐