附录C C语言运算符优先级和结合性
优先级 |
运算符 |
含义 |
运算类型 |
结合性 |
1 |
() [ ] -> . |
圆括号 下标运算符 指向结构体成员运算符 结构体成员运算符 |
单目 |
自左向右 |
2 |
! ~ ++ -- (类型关键字) + - * & sizeof |
逻辑非运算符 按位取反运算符 自增、自尖运算符 强制类型转换 正、负号运算符 指针运算符 地址运算符 长度运算符 |
单目 |
自右向左 |
3 |
* / % |
乘、除、求余运算符 |
双目 |
自左向右 |
4 |
+ - |
加、减运算符 |
双目 |
自左向右 |
5 |
<< >> |
左移运算符 右移运算符 |
双目 |
自左向右 |
6 |
< <= > >= |
小于、小于等于、大于、大于等于 |
关系 |
自左向右 |
7 |
= = != |
等于、不等于 |
关系 |
自左向右 |
8 |
& |
按位与运算符 |
位运算 |
自左向右 |
9 |
^ |
按位异或运算符 |
位运算 |
自左向右 |
10 |
| |
按位或运算符 |
位运算 |
自左向右 |
11 |
&& |
逻辑与运算符 |
位运算 |
自左向右 |
12 |
|| |
逻辑或运算符 |
位运算 |
自左向右 |
13 |
? : |
条件运算符 |
三目 |
自右向左 |
14 |
= += -= *= /= %= <<= >>= &= ^= |= |
赋值运算符 |
双目 |
自右向左 |
15 |
, |
逗号运算 |
顺序 |
自左向右 |
单目运算符:
1、() 圆括号
[ ] 下标运算符
-> 指向结构体成员运算符
. 结构体成员运算符 自左向右
2、! 逻辑非运算符
~ 按位取反运算符
++ -- 自增、自尖运算符
(类型关键字) 强制类型转换
+ - 正、负号运算符
* 指针运算符
& 地址运算符
sizeof 长度运算符 自右向左
双目运算符:
1、* / % 乘、除、求余运算符
+ - 加、减运算符
<< >> 左移运算符右移运算符 自左向右
2、= += -= *=
/= %=<<= >>=
&= ^= |= 赋值运算符 自右向左
三目运算符:(自右向左)
? : 条件运算符
关系运算符:(自左向右)
< <= > >= 小于、小于等于、大于、大于等于
= = != 等于、不等于
位运算符:(自左向右)
& 按位与运算符
^ 按位异或运算符
| 按位或运算符
&& 逻辑与运算符
|| 逻辑或运算符
顺序运算符:( 自左向右)
, 逗号运算
计算机等级考试C语言运算符的“优先级口决”
C语言运算符的“优先级口决”
希望对初学C语言语言的朋友有所帮助;当然,应用这个口诀的前提是你必须认识所有的C语言的运算符。
优先级口诀
括号成员第一; //括号运算符[]()成员运算符. ->
全体单目第二; //所有的单目运算符比如++ -- +(正) -(负) 指针运算*&
乘除余三,加减四; //这个"余"是指取余运算即%
移位五,关系六; //移位运算符:<< >>,关系:> < >= <= 等
等于(与)不等排第七; //即== !=
位与异或和位或; //这几个都是位运算:位与(&)异或(^)位或(|)
"三分天下"八九十;
逻辑或跟与; //逻辑运算符:||和 &&
十二和十一; //注意顺序:优先级(||) 底于 优先级(&&)
条件高于赋值, //三目运算符优先级排到 13位只比赋值运算符和","高//需要注意的是赋值运算符很多!
逗号运算级最低! //逗号运算符优先级最低
由于C语言的运算符优先级与C++的不完全一样(主要是增加了几个运算符),所以这个口诀不能完全实用于C++.但是应该能够兼容,大家可以比较一下他们的区别应该就能够很快掌握C++的优先级的!