• 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#中常用运算符优先级别划分

    1. 单元运算符和括号

    2. 常规算术运算符

    3. 位移运算符

    4. 比较运算符

    5. 逻辑运算符

    6. 各种赋值运算符

    7. 右位(后缀)单元运算符


    C#运算符详细说明

    1. 在这一级中,有++、--(做为前缀)、()、+、-(做为单元运算符)、!、~

      这一级中都是单元运算符,除了其中那一对特殊的具有改变任何运算优先级的括号

      这此可以看出,在定义表达式中,那些单元运算符的优先级是很高的,可能是因为它们都直接作用于操作数吧

      只有两个单元运算符的优先级不在第一级中,它们因为特殊的原因出现在了后面

    2. 在常规算术运算符中,有我们经常使用的*、/、%、+、-,因为他们使用得较多,所以也排在较高的位置。

    3. 这一级是两个特殊的位操作符,<< 和 >>,它们是所有二元操作符中除常规运算符外优先级最高的了,可能是因为与比较运算符、逻辑运算符比起来,这一组操作符进行的还是数值的计算

    4. 比较运算符,包括<、>、<=、>=、==、!=,一共六个,这里有一个特点,就小于优先于大于

    5. 逻辑运算符,逻辑运算符原本有四种,但用于单元的“非”运算符排在了前面,所以这里面就只有&、^、|,再加上两个补充的用于提高代码效率的运算符&&、||等共有五个

    6. 赋值运算符,这一级最多,几乎前面出现过的二元运算符,在这里加上个“=”号就成为一个赋值运算符

      首先当然最基本的赋值运算符“=”;然后是常规算术运算符演变来的“*=、/=、%=、+=、-=”,它们的顺序和常规算术符的顺序一样

      然后是位移运算符和逻辑运算符,也按它们演变前的顺序排列,为“<<=、>>=、&=、^=、|=”

      因为比较运算符所产生的结果的数据类型和它的运算数的数据类型不同,所以它们没有相应的赋值运算符

    7. 最后一级,就是那两个最后的单元运算符后缀版的++、--

      它们的出现就是为了做为那两个前缀版的==、--的补充(那两个的优先级太高了,人们需要两个优先级不那么高的)

      以方便设计表达式,所以这两个的优先级当然要排在最后了


    C#运算符总结优先级顺序

    • 无论是从上而下,还是从左到右,都是越上和越前面,优先级越高

    • 第一级:++、--(做为前缀)、()、+、-(做为单元运算符时)、!、~

    • 第二级:*、/、%、+、-

    • 第三级:<<、>>位移运算

    • 第四级:<、>、<=、>=、==、!=(逻辑比较)

    • 第五级:&、^、|、&&、||

    • 第六级:=、*=、/=、%=、+=、-=、<<=、>>=、&=、^=、|=

    • 第七级:++、--(做为后缀)

       

  • 相关阅读:
    电容笔和Apple Pencil有什么区别?双十一好用电容笔推荐
    SuperMap iServer 快速发布其它平台GIS服务
    Java 并发编程基础 --Synchronized
    UniApp video 使用(自定义进度条,及微信无法暂停播放设置进度问题)
    【TcaplusDB知识库】TcaplusDB表数据缓写介绍
    深度学习学习率的调整
    计算机毕业设计Python+djang大学生社团管理系统(源码+系统+mysql数据库+Lw文档)
    【精选】OpenCV多视角摄像头融合的目标检测系统:全面部署指南&源代码
    【Spring】 IoC & AOP 控制反转与面向切面编程
    vue学习(方法和路径)
  • 原文地址:https://blog.csdn.net/linyichao123/article/details/128090673