标签:
1级优先级 左结合
() 圆括号
[] 下标运算符
-> 指向结构体成员运算符
. 结构体成员运算符
2级优先级 右结合
! 逻辑非运算符
~ 按位取反运算符
++ 自增运算符
-- 自减运算符
- 负号运算符
(类型) 类型转换运算符
* 指针运算符
& 地址与运算符
sizeof 长度运算符
3级优先级 左结合
* 乘法运算符
/ 除法运算符
% 取余运算符
4级优先级 左结合
+ 加法运算符
- 减法运算符
5级优先级 左结合
<< 左移运算符
>> 右移运算符
6级优先级 左结合
<、<=、>、>= 关系运算符
7级优先级 左结合
== 等于运算符
!= 不等于运算符
8级优先级 左结合
& 按位与运算符
9级优先级 左结合
^ 按位异或运算符
10级优先级 左结合
| 按位或运算符
11级优先级 左结合
&& 逻辑与运算符
12级优先级 左结合
|| 逻辑或运算符
13级优先级 右结合
? : 条件运算符
14级优先级 右结合
= += -= *= /= %= &= ^= |= <<= >>= 全为赋值运算符
15级优先级 左结合
, 逗号运算符
优先级的顺序是从上往下递增,在同等级的情况中我们要遵循[左结合/右结合]的原理
例: if(!a>10) return 1; else return 0;
上面这个例子:可能我们想的时候是a>10 取反,但是这里的结果恰恰相反。
在这个例子中 ! 的优先级最大 ,先运算的 !a ,在把运算的结果0或1 同10 进行比较。
如果我们在搞不懂优先级别的情况下,可以添加()来提升运算的优先级别。()的优先级别最高
if(!(a>10)) return 1; else return 0;
这里就是先对a>10进行比较,然后在对比较的值取反。
标签:
原文地址:http://my.oschina.net/u/2421636/blog/488487