C#运算符执行顺序对照表
C#运算符执行顺序对照表:在线查看C#运算符执行优先级别 窍门: Ctrl+F 快速查找
C#运算符优先级,是描述在计算机计算表达式时执行运算的先后顺序。 先执行具有较高优先级的运算,然后执行较低优先级的运算。 例如,我们常说的先执行相乘和除,再执行加减运算。
优先级 | 运算符 | 名称或含义 | 使用形式 | 结合方向 | 说明 |
---|---|---|---|---|---|
1 | [] | 数组下标 | 数组名[整型表达式] | 左到右 | |
() | 圆括号 | (表达式)/函数名(形参表) | |||
. | 成员选择(对象) | 对象.成员名 | |||
-> | 成员选择(指针) | 对象指针->成员名 | |||
2 | - | 负号运算符 | -表达式 | 右到左 | 单目运算符 |
(类型) | 强制类型转换 | (数据类型)表达式 | |||
++ | 自增运算符 | ++变量名/变量名++ | 单目运算符 | ||
-- | 自减运算符 | --变量名/变量名-- | 单目运算符 | ||
* | 取值运算符 | *指针表达式 | 单目运算符 | ||
& | 取地址运算符 | &左值表达式 | 单目运算符 | ||
! | 逻辑非运算符 | !表达式 | 单目运算符 | ||
~ | 按位取反运算符 | ~表达式 | 单目运算符 | ||
sizeof | 长度运算符 | sizeof表达式/sizeof(类型) | |||
3 | / | 除 | 表达式/表达式 | 左到右 | 双目运算符 |
* | 乘 | 表达式*表达式 | 双目运算符 | ||
% | 余数(取模) | 整型表达式%整型表达式 | 双目运算符 | ||
4 | + | 加 | 表达式+表达式 | 左到右 | 双目运算符 |
- | 减 | 表达式-表达式 | 双目运算符 | ||
5 | << | 左移 | 表达式<<表达式 | 左到右 | 双目运算符 |
>> | 右移 | 表达式>>表达式 | 双目运算符 | ||
6 | > | 大于 | 表达式>表达式 | 左到右 | 双目运算符 |
>= | 大于等于 | 表达式>=表达式 | 双目运算符 | ||
< | 小于 | 表达式<表达式 | 双目运算符 | ||
<= | 小于等于 | 表达式<=表达式 | 双目运算符 | ||
7 | == | 等于 | 表达式==表达式 | 左到右 | 双目运算符 |
!= | 不等于 | 表达式!=表达式 | 双目运算符 | ||
8 | & | 按位与 | 整型表达式&整型表达式 | 左到右 | 双目运算符 |
9 | ^ | 按位异或 | 整型表达式^整型表达式 | 左到右 | 双目运算符 |
10 | | | 按位或 | 整型表达式|整型表达式 | 左到右 | 双目运算符 |
11 | && | 逻辑与 | 表达式&&表达式 | 左到右 | 双目运算符 |
12 | || | 逻辑或 | 表达式||表达式 | 左到右 | 双目运算符 |
13 | ?: | 条件运算符 | 表达式1?表达式2:表达式3 | 右到左 | 三目运算符 |
14 | = | 赋值运算符 | 变量=表达式 | 右到左 | |
/= | 除后赋值 | 变量/=表达式 | |||
*= | 乘后赋值 | 变量*=表达式 | |||
%= | 取模后赋值 | 变量%=表达式 | |||
+= | 加后赋值 | 变量+=表达式 | |||
-= | 减后赋值 | 变量-=表达式 | |||
<<= | 左移后赋值 | 变量<<=表达式 | |||
>>= | 右移后赋值 | 变量>>=表达式 | |||
&= | 按位与后赋值 | 变量&=表达式 | |||
^= | 按位异或后赋值 | 变量^=表达式 | |||
|= | 按位或后赋值 | 变量|=表达式 | |||
15 | , | 逗号运算符 | 表达式,表达式,… | 左到右 | 从左向右顺序运算 |
C#中常用运算符优先级别划分
-
单元运算符和括号
-
常规算术运算符
-
位移运算符
-
比较运算符
-
逻辑运算符
-
各种赋值运算符
-
右位(后缀)单元运算符
C#运算符详细说明
-
在这一级中,有++、--(做为前缀)、()、+、-(做为单元运算符)、!、~
这一级中都是单元运算符,除了其中那一对特殊的具有改变任何运算优先级的括号
这此可以看出,在定义表达式中,那些单元运算符的优先级是很高的,可能是因为它们都直接作用于操作数吧
只有两个单元运算符的优先级不在第一级中,它们因为特殊的原因出现在了后面
-
在常规算术运算符中,有我们经常使用的*、/、%、+、-,因为他们使用得较多,所以也排在较高的位置。
-
这一级是两个特殊的位操作符,<< 和 >>,它们是所有二元操作符中除常规运算符外优先级最高的了,可能是因为与比较运算符、逻辑运算符比起来,这一组操作符进行的还是数值的计算
-
比较运算符,包括<、>、<=、>=、==、!=,一共六个,这里有一个特点,就小于优先于大于
-
逻辑运算符,逻辑运算符原本有四种,但用于单元的“非”运算符排在了前面,所以这里面就只有&、^、|,再加上两个补充的用于提高代码效率的运算符&&、||等共有五个
-
赋值运算符,这一级最多,几乎前面出现过的二元运算符,在这里加上个“=”号就成为一个赋值运算符
首先当然最基本的赋值运算符“=”;然后是常规算术运算符演变来的“*=、/=、%=、+=、-=”,它们的顺序和常规算术符的顺序一样
然后是位移运算符和逻辑运算符,也按它们演变前的顺序排列,为“<<=、>>=、&=、^=、|=”
因为比较运算符所产生的结果的数据类型和它的运算数的数据类型不同,所以它们没有相应的赋值运算符
-
最后一级,就是那两个最后的单元运算符后缀版的++、--
它们的出现就是为了做为那两个前缀版的==、--的补充(那两个的优先级太高了,人们需要两个优先级不那么高的)
以方便设计表达式,所以这两个的优先级当然要排在最后了
C#运算符总结优先级顺序
-
无论是从上而下,还是从左到右,都是越上和越前面,优先级越高
-
第一级:++、--(做为前缀)、()、+、-(做为单元运算符时)、!、~
-
第二级:*、/、%、+、-
-
第三级:<<、>>位移运算
-
第四级:<、>、<=、>=、==、!=(逻辑比较)
-
第五级:&、^、|、&&、||
-
第六级:=、*=、/=、%=、+=、-=、<<=、>>=、&=、^=、|=
-
第七级:++、--(做为后缀)
相关文章
- C# 给某个方法设定执行超时时间
- c#(.Net)解析xml
- C#中的转义字符verbatim string
- c# 中内部类的简单介绍 C#内部类
- C#订阅与发布标准实现 visual studio code .net 开发 设计模式之☞策略模式 C#字符串转二进制、二进制转字符串 c# 接口的协变和逆变 c# 使用迭代器来创建可枚举类型 博客园首页新随笔联系订阅管理 随笔 - 117 文章 - 0 评论 - 57 c# 创建,加载,修改XML文档
- C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序
- 如何使用T-SQL备份还原数据库及c#如何调用执行? C#中索引器的作用和实现。 jquery控制元素的隐藏和显示的几种方法。 localStorage、sessionStorage用法总结 在AspNetCore中扩展Log系列 - 介绍开源类库的使用(一) span<T>之高性能字符串操作实测
- XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)
- 反爬虫:利用ASP.NET MVC的Filter和缓存(入坑出坑) C#中缓存的使用 C#操作redis WPF 控件库——可拖动选项卡的TabControl 【Bootstrap系列】详解Bootstrap-table AutoFac event 和delegate的分别 常见的异步方式async 和 await C# Task用法 c#源码的执行过程
- c# 把一个匿名对象赋值给一个Object类型的变量后,怎么取这个变量? c# dynamic动态类型和匿名类 详解C# 匿名对象(匿名类型)、var、动态类型 dynamic 深入浅析C#中的var和dynamic
- 浅谈c#的三个高级参数ref out 和Params C#中is与as的区别分析 “登陆”与“登录”有何区别 经典SQL语句大全(绝对的经典)
- ADO.NET 对数据操作 以及如何通过C# 事务批量导入数据
- C# IL DASM 使用-破解c#软件方法
- Word控件Spire.Doc 【Table】教程(9): 通过在 C# 中克隆来插入现有表
- c# .net 模拟请求 POST, Get,Put,Delete,并带Headers,BUF加持异步多线程执行
- c# ASP.NET怎么看EF生成的SQL语句和EF执行的所有活动
- c#实现每隔规定时间自动执行程序代码 c#定时器
- C#,图像二值化(17)——全局阈值的ISODATA算法(亦称作InterMeans法)及其源程序
- C#中异步窗体的调用的几种方法
- c#简单的组播例子
- C# 图像处理
- C# socket ipv6初体验
- 用C#实现通用守护进程
- 基于C#开发(WinForm)营销号“助手”软件【100010301】
- C#Windows服务程序安装常见问题解决方法
- C#中try catch finally的执行顺序(转载)
- C#多线程编程之:Monitor使用示例及Mutex简介
- C#如何控制方法的执行时间,超时则强制退出方法执行
- C# Monitor:锁定资源
- C# 监测每个方法的执行次数和占用时间(测试1)
- C#与.NET Framework c#编程语言,和java是一样的。(c#,java) -->javaweb,asp.net