C语言运算优先级

来源:互联网 发布:复旦大学行政管理知乎 编辑:程序博客网 时间:2024/04/30 20:29

1优先级等级口诀

圆方括号、箭头一句号, 自增自减非反负、针强地址长度,乘除,加减,再移位,小等大等、等等不等,八位与,七位异,六位或,五与,四或,三疑,二赋,一真逗。其中“,”号为一个等级分段。

2.级别

1级(左结合)
( ) 圆括号;[ ]下标运算符;->指向结构体成员运算符;. 结构体成员运算符。
2级(右结合)
“ ! ”逻辑非运算符;“ ~ ”按位取反运算符;“ ++ ”前缀增量运算符;“ -- ”前缀减量运算符;
“ - ”负号运算符;(类型)类型转换运算符;“ * ”指针运算符;“ & ”地址运算符。
3级(左结合)
“ * ” 乘法运算符;“ / ”除法运算符;“ % ” 取余运算符。
4级(左结合)
“ + ”加法运算符;“ - ”减法运算符。
5级(左结合)
<< 左移运算符;>> 右移运算符。
6级(左结合)
<、<=、>、>=关系运算符。
7级(左结合)
“ == ”等于运算符;“ != ”不等于运算符。
8级(左结合)
“ & ”按位与运算符,“~“按位取反运算符”。
9级(左结合)
“ ∧ ”按位异或运算符。
10级(左结合)
“ | ”按位或运算符。
11级(左结合)
“&&”逻辑与运算符。
12级(左结合)
“ || ”逻辑或运算符。
13级(右结合)
? :条件运算符。
14级(右结合)
=、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>=赋值运算符。
15级(左结合)
“,”逗号运算符。
3.
优先级等级注释
“圆方括号、箭头一句号”指的是第15级的运算符。其中圆方括号很明显“()、[]”,箭头 指的是指向结构体成员运算符“->”,句号 指的是结构体成员运算符“.” ;
“自增自减非反负、针强地址长度”指的是第14级的运算符。其中 非 指的是逻辑运算符“!”,反 指的是按位取反运算符“~”,负 指的是负号运算符“-”,针 指的是指针运算符“*”,强 指的是强制类型转换运算符,地址 指的是地址运算符“&”,长度 指的是长度运算符“sizeof ”;
“乘除,加减,再移位”移位指的是左移运算符“<<”和右移运算符“>>”,其中除法还包括了 取余运算符“%”;
“小等大等、等等不等” 指的是第10级到第9级的运算符:<、<=、>和>=,等等指的是等于运算符==,不等指的是不等于运算符!=
“八位与,七位异,六位或”其中 八位与 指的是第8级的 按位与 运算符“&”,七位异 指的是第7级的按位异或运算符“^”,六位或 指的是第6级的按位或运算符“|”;
“五与,四或”指的是第5级、第4级的逻辑与运算符“&&”和逻辑或运算符“||”;
“三疑,二赋,一真逗”指的是第3级到第1级的运算符。其中,三疑指的是条件运算符“?:” (三有双重含义:即指优先级别是三,它的运算符类型也是三目,疑也取“?”之意),二赋 指的是赋值运算符=、+=、-=、*=、/=、%=、>>=、<<=、&=、^=和|= ,一真逗 指的是第1级的“,”运算符,真字只是为了语句需要罢了。
由于C语言的运算符优先级与C++的不完全一样(主要是增加了几个运算符),所以这个口诀不能完全实用于C++.但是应该能够兼容,大家可以比较一下他们的区别应该就能够很快掌握C++的优先级的!
0 0
原创粉丝点击