c操作符优先级

操作符/运算符优先级
优先级 操作符 描述 用法示例 结果类型 结合性 控制求值顺序
1 ( ) 聚组 (expRession)   与表达式相同 N/A
1 ( ) 函数调用 Rexp(Rexp,..,Rexp)   Rexp L-R
1 [ ] 下标引用 Rexp[Rexp]   Lexp L-R
1 . 访问结构成员 Lexp.memeber   Lexp L-R
1 -> 访问结指针成员 Rexp->member   Lexp L-R
2 ++ 后缀自增 Lexp++ 单目 Rexp L-R
2 -- 后缀自减 Lexp-- 单目 Rexp L-R
2 ! 逻辑非 !Rexp 单目 Rexp R-L
2 ~ 按位取反 ~Rexp 单目 Rexp R-L
2 + 单目,表示正值 +Rexp 单目 Rexp R-L
2 - 单目,表示负值 -Rexp 单目 Rexp R-L
2 ++ 前缀自增 ++Lexp 单目 Rexp R-L
2 -- 前缀自减 --Lexp 单目 Rexp R-L
2 * 间接访问 *Rexp 单目 Lexp R-L
2 & 取地址 &Lexp 单目 Rexp R-L
2 sizeof 求长度 sizeof(type)
sizeof Rexp
  Rexp R-L
2 (tpye) 类型转换 (type)Rexp   Rexp R-L
3 * 乘法 Rexp*Rexp 双目 Rexp L-R
3 / 除法 Rexp/Rexp 双目 Rexp L-R
3 % 整数取余 Rexp%Rexp 双目 Rexp L-R
4 + 加法 Rexp+Rexp 双目 Rexp L-R
4 - 减法 Rexp-Rexp 双目 Rexp L-R
5 << 左移位 Rexp<<Rexp 双目 Rexp L-R
5 >> 右移位 Rexp>>Rexp 双目 Rexp L-R
6 > 大于 Rexp>Rexp 双目 Rexp L-R
6 >= 大于等于 Rexp>=Rexp 双目 Rexp L-R
6 < 小于 Rexp>Rexp 双目 Rexp L-R
6 <= 小于等于 Rexp<=Rexp 双目 Rexp L-R
7 == 等于 Rexp==Rexp 双目 Rexp L-R
7 != 不等于 Rexp!=Rexp 双目 Rexp L-R
8 & 按位与 Rexp&Rexp 双目 Rexp L-R
9 ^ 按位异或 Rexp^Rexp 双目 Rexp L-R
10 | 按位或  Rexp|Rexp 双目 Rexp L-R
11 && 逻辑与 Rexp&&Rexp 双目 Rexp L-R
12 || 逻辑或 Rexp||Rexp 双目 Rexp L-R
13 ?: 条件操作符 Rexp?Rexp:Rexp 三目 Rexp N/A
14 = 赋值 Lexp=Rexp   Rexp R-L
14 += 加等于 Lexp+=Rexp   Rexp R-L
14 -= 减等于 Lexp-=Rexp   Rexp R-L
14 *= 乘等于 Lexp*=Rexp   Rexp R-L
14 /=  除等于 Lexp/=Rexp   Rexp R-L
14 %= 取模等于 Lexp%=Rexp   Rexp R-L
14 <<= 左移等于 Lexp<<=Rexp   Rexp R-L
14 >>= 右移等于 Lexp>>=Rexp   Rexp R-L
14 &= 与等于 Lexp&=Rexp   Rexp R-L
14 ^= 异或等于 Lexp^=Rexp   Rexp R-L
14 |= 或等于 Lexp|=Rexp   Rexp R-L
15 , 逗号 Rexp,Rexp   Rexp L-R
               
PS: 非法表达式的求值顺序和优先级与使用的编译器有关,应尽量避免此种表达式出现

 

 http://en.cppreference.com/w/c/language/operator_precedence

posted @ 2012-07-30 21:37  arkhe  阅读(155)  评论(0编辑  收藏  举报