• C语言运算符优先级和口诀


    口诀一:

               醋坛酸味灌
               味落跳福豆

    共44个运算符

    -初等,4个: ( ) [ ] -> 指向结构体成员 . 结构体成员
    -单目,9个: ! ~ ++ -- -负号 (类型) *指针 &取地址 sizeof长度 (结合方向:自右向左)
    -算术,5个: * / % + -减
    -位移,2个: << >>
    -关系,6个: < <= > >= == 等于 != 不等于
    -位逻,3个: & 按位与 ^ 按位异或 | 按位或
    -逻辑,2个: && 逻辑与 || 逻辑或
    -条件,1个,三目: ? : (结合方向:自右向左)
    -赋值,11个: = += -= *= /= %= >>= <<= &= ^= |= (结合方向:自右向左)
    -逗号,1个: ,
    结合方向自右向左的只有三类:赋值、单目和三目,其它的都是从左至右结合。

    口诀二: 

    一共有十五个优先级:

    1 () [] . ->

    2 ! ~ -(负号) ++ -- &(取变量地址)* (type)(强制类型) sizeof

    3 * / %

    4 + -

    5 >> <<

    6 > >= < <=

    7 == !=

    8 &

    9 ^

    10 |

    11 &&

    12 ||

    13 ?:

    14 = += -= *= /= %= |= ^= &= >>= <<=

    15 ,

    就着多吧 结合性:2 13 14 是从右至左 其他都是 从左至右有问题可以在交流的共同进步


    括号成员第一; //括号运算符[]() 成员运算符. ->

    全体单目第二; //所有的单目运算符比如++、 --、 +(正)、 -(负) 、指针运算*、&

    乘除余三,加减四; //这个"余"是指取余运算即%

    移位五,关系六; //移位运算符:<< >> ,关系:> < >= <= 等

    等于(与)不等排第七; //即== 和!=

    位与异或和位或; //这几个都是位运算: 位与(&)异或(^)位或(|)

    "三分天下"八九十;

    逻辑或跟与; //逻辑运算符:|| 和 &&

    十二和十一; //注意顺序:优先级(||) 底于 优先级(&&)

    条件高于赋值, //三目运算符优先级排到13 位只比赋值运算符和","高

    逗号运算级最低! //逗号运算符优先级最低

    优先级

    运算符

    名称或含义

    使用形式

    结合方向

    说明

    1

    []

    数组下标

    数组名[常量表达式]

    左到右

     

    ()

    圆括号

    (表达式)/函数名(形参表)

     

    .

    成员选择(对象)

    对象.成员名

     

    ->

    成员选择(指针)

    对象指针->成员名

     

    2

    -

    负号运算符

    -表达式

    右到左

    单目运算符

    (类型)

    强制类型转换

    (数据类型)表达式

     

    ++

    自增运算符

    ++变量名/变量名++

    单目运算符

    --

    自减运算符

    --变量名/变量名--

    单目运算符

    *

    取值运算符

    *指针变量

    单目运算符

    &

    取地址运算符

    &变量名

    单目运算符

    !

    逻辑非运算符

    !表达式

    单目运算符

    ~

    按位取反运算符

    ~表达式

    单目运算符

    sizeof

    长度运算符

    sizeof(表达式)

     

    3

    /

    表达式/表达式

    左到右

    双目运算符

    *

    表达式*表达式

    双目运算符

    %

    余数(取模)

    整型表达式/整型表达式

    双目运算符

    4

    +

    表达式+表达式

    左到右

    双目运算符

    -

    表达式-表达式

    双目运算符

    5

    <<

    左移

    变量<<表达式

    左到右

    双目运算符

    >>

    右移

    变量>>表达式

    双目运算符

    6

    >

    大于

    表达式>表达式

    左到右

    双目运算符

    >=

    大于等于

    表达式>=表达式

    双目运算符

    <

    小于

    表达式<表达式

    双目运算符

    <=

    小于等于

    表达式<=表达式

    双目运算符

    7

    ==

    等于

    表达式==表达式

    左到右

    双目运算符

    !=

    不等于

    表达式!= 表达式

    双目运算符

    8

    &

    按位与

    表达式&表达式

    左到右

    双目运算符

    9

    ^

    按位异或

    表达式^表达式

    左到右

    双目运算符

    10

    |

    按位或

    表达式|表达式

    左到右

    双目运算符

    11

    &&

    逻辑与

    表达式&&表达式

    左到右

    双目运算符

    12

    ||

    逻辑或

    表达式||表达式

    左到右

    双目运算符

    13

    ?:

    条件运算符

    表达式1? 表达式2: 表达式3

    右到左

    三目运算符

    14

    =

    赋值运算符

    变量=表达式

    右到左

     

    /=

    除后赋值

    变量/=表达式

     

    *=

    乘后赋值

    变量*=表达式

     

    %=

    取模后赋值

    变量%=表达式

     

    +=

    加后赋值

    变量+=表达式

     

    -=

    减后赋值

    变量-=表达式

     

    <<=

    左移后赋值

    变量<<=表达式

     

    >>=

    右移后赋值

    变量>>=表达式

     

    &=

    按位与后赋值

    变量&=表达式

     

    ^=

    按位异或后赋值

    变量^=表达式

     

    |=

    按位或后赋值

    变量|=表达式

     

    15

    ,

    逗号运算符

    表达式,表达式,…

    左到右

    从左向右顺序运算

  • 相关阅读:
    Android 网络加载动态库 .so
    利用input新类型,解决移动端原生实现日期时间联动问题,精确到分
    简单对React入个门-个人总结
    三种方式创建Angular的自定义服务
    Angular的自定义指令-个人总结
    利用Angular的自定义过滤器功能实现单词的首字母大写
    简单小例子带你明白Angular的MVVM思想
    Angular基础引导(1)
    JavaScript简单拖拽事件(鼠标跟随事件)
    简单数组去重
  • 原文地址:https://www.cnblogs.com/viviwind/p/2631484.html
Copyright © 2020-2023  润新知