C语言运算符优先级等级口诀

 C语言运算符优先级等级口诀

C语言运算符优先级等级口诀

       [圆方括号、箭头一句号]
  [自增自减非反负、针强地址长度]
  [乘除,加减,再移位]
  [小等大等、等等不等]
  [八位与],[七位异],[六位或],[五与],[四或],[三疑],[二赋],[一真逗]

  (其中“[]”号为一个等级分段)

说明:

  “圆方括号、箭头一句号”
         指的是第15级的运算符。其中【圆方括号】为“()、[]”,【箭头】指的是指向结构体成员运算符“->”,【句号】指的是结构体成员运算符“.” ;

  “自增自减非反负、针强地址长度”
         指的是第14级的运算符。其中【非】指的是逻辑运算符“!”,【反】指的是按位取反运算符“~”,【负】指的是负号运算符“-”,【针】指的是指针运算符“*”,【强】指的是强制类型转换运算符,【地址】指的是地址运算符“&”,【长度】指的是长度运算符“sizeof ”;

  “乘除,加减,再移位”
         【移位】指的是左移运算符“<<”和右移运算符“>>”,其中【除】还包括了 取余运算符“%”;

  “小等大等、等等不等”
         【小等大等】指的是第10级到第9级的运算符:<、<=、>和>=,【等等】指的是等于运算符“==”,【不等】指的是不等于运算符“!=”;

  “八位与,七位异,六位或”
         【八位与】指的是第8级的 按位与 运算符“&”,【七位异】指的是第7级的按位异或 运算符“^”,【六位或】指的是第6级的按位或运算符“|”;

  “五与,四或”
         【五与】指的是第5级的逻辑与运算符“&&”,【四或】第4级和逻辑或运算符“||”;

  “三疑,二赋,一真逗”
         指的是第3级到第1级的运算符。其中,【三疑】指的是条件运算符“?:” (三有双重含义:即指优先级别是三,它的运算符类型也是三目,疑也取“?”之意),【二赋】指的是赋值运算符=、+=、-=、*=、/=、%=、>>=、<<=、&=、^=和|= ,【一真逗】指的是第1级的“,”运算符,真字只是为了语句需要罢了。

  由于C语言的运算符优先级与C++的不完全一样(主要是增加了几个运算符),所以这个口诀不能完全实用于C++.但是应该能够兼容,大家可以比较一下他们的区别应该就能够很快掌握C++的优先级的!


=====运算符的优先级与结合律(从高到低排列)=====

运算符   ………………………………………………   结合律

( ) [ ] -> .   …………………………………………   从左至右

! ~ ++ -- (类型) sizeof + - * &   …………    从右至左

* / %   ………………………………………………   从左至右

+ -   …………………………………………………   从左至右

<< >>   ……………………………………………   从左至右

<   <=   > >=   ……………………………………   从左至右

== !=   ……………………………………………     从左至右

&   ……………………………………………………   从左至右

^   ……………………………………………………   从左至右

|   ……………………………………………………   从左至右

&&   …………………………………………………   从左至右

||   ……………………………………………………   从右至左

?:   ……………………………………………………   从右至左

= += -= *= /= %= &= ^= |= <<= >>=   … 从左至右

优先级
运算符 名称或含义 使用形式 结合方向 说明
1
[] 数组下标 数组名[常量表达式] 左到右
() 圆括号 (表达式)/函数名(形参表)
.   成员选择(对象) 对象.成员名
-> 成员选择(指针) 对象指针->成员名
  
2
- 负号运算符 -表达式 右到左 单目运算符
(类型)       强制类型转换     (数据类型)表达式  
++    自增运算符   ++变量名/变量名++ 单目运算符
--    自减运算符   --变量名/变量名-- 单目运算符
*     取值运算符    *指针变量   单目运算符
&    取地址运算符    &变量名    单目运算符
!    逻辑非运算符    !表达式    单目运算符
~    按位取反运算符   ~表达式   单目运算符
sizeof   长度运算符    sizeof(表达式)
  
3
/ 除 表达式/表达式 左到右 双目运算符
* 乘 表达式*表达式 左到右 双目运算符
% 余数(取模) 整型表达式/整型表达式 双目运算符

4
+ 加 表达式+表达式 左到右 双目运算符
- 减 表达式-表达式 双目运算符

5
<< 左移 变量<<表达式 左到右 双目运算符
>> 右移 变量>>表达式    双目运算符

6
> 大于 表达式>表达式 左到右 双目运算符
>= 大于等于 表达式>=表达式   双目运算符
< 小于 表达式<表达式       双目运算符
<= 小于等于 表达式<=表达式 双目运算符

7
== 等于 表达式==表达式 左到右 双目运算符

!= 不等于 表达式!= 表达式 双目运算符

8
& 按位与 表达式&表达式 左到右 双目运算符

9
^ 按位异或 表达式^表达式 左到右 双目运算符

10
| 按位或 表达式|表达式 左到右 双目运算符

11
&& 逻辑与 表达式&&表达式 左到右 双目运算符

12
|| 逻辑或 表达式||表达式 左到右 双目运算符

13
?: 条件运算符 表达式1? 表达式2: 表达式3 右到左 三目运算符

14
= 赋值运算符 变量=表达式 右到左
  
/= 除后赋值 变量/=表达式
  
*= 乘后赋值 变量*=表达式
  
%= 取模后赋值 变量%=表达式
  
+= 加后赋值 变量+=表达式
  
-= 减后赋值 变量-=表达式
  
<<= 左移后赋值 变量<<=表达式
  
>>= 右移后赋值 变量>>=表达式

&= 按位与后赋值 变量&=表达式
  
^= 按位异或后赋值 变量^=表达式
  
|= 按位或后赋值 变量|=表达式
  
15
, 逗号运算符 表达式,表达式,… 左到右 从左向右顺序运算

说明:

同一优先级的运算符,运算次序由结合方向所决定

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值