设为首页 加入收藏

TOP

[注意]C 运算符优先级 口诀 易错点
2015-11-19 23:07:11 来源: 作者: 【 】 浏览:12
Tags:注意 运算 优先 口诀 易错点
C运算符优先级!
?
优先级 运算符 名称或含义 使用形式 结合方向 说明
1 [] 数组下标 数组名[常量表达式] 左到右
() 圆括号 (表达式)/函数名(形参表)
. 成员选择(对象) 对象.成员名
-> 成员选择(指针) 对象指针->成员名
2 - 负号运算符 -表达式 右到左 单目运算符
(类型) 强制类型转换 (数据类型)表达式
++ 自增运算符 ++变量名/变量名++ 单目运算符
-- 自减运算符 --变量名/变量名-- 单目运算符
* 取值运算符 *指针变量 单目运算符
& 取地址运算符 &变量名 单目运算符
! 逻辑非运算符 !表达式 单目运算符
~ 按位取反运算符 ~表达式 单目运算符
sizeof 长度运算符 sizeof(表达式)
3 / 表达式/表达式 左到右 双目运算符
* 表达式*表达式 双目运算符
% 余数(取模) 整型表达式/整型表达式 双目运算符
4 + 表达式+表达式 左到右 双目运算符
- 表达式-表达式 双目运算符
5 << 左移 变量<<表达式 左到右 双目运算符
>> 右移 变量>>表达式 双目运算符
6 > 大于 表达式>表达式 左到右 双目运算符
>= 大于等于 表达式>=表达式 双目运算符
< 小于 表达式<表达式 双目运算符
<= 小于等于 表达式<=表达式 双目运算符
7 == 等于 表达式==表达式 左到右 双目运算符
!= 不等于 表达式!= 表达式 双目运算符
8 & 按位与 表达式&表达式 左到右 双目运算符
9 ^ 按位异或 表达式^表达式 左到右 双目运算符
10 | 按位或 表达式|表达式 左到右 双目运算符
11 && 逻辑与 表达式&&表达式 左到右 双目运算符
12 || 逻辑或 表达式||表达式 左到右 双目运算符
13 ?: 条件运算符 表达式1? 表达式2:表达式3 右到左 三目运算符
14 = 赋值运算符 变量=表达式 右到左
/= 除后赋值 变量/=表达式
*= 乘后赋值 变量*=表达式
%= 取模后赋值 变量%=表达式
+= 加后赋值 变量+=表达式
-= 减后赋值 变量-=表达式
<<= 左移后赋值 变量<<=表达式
>>= 右移后赋值 变量>>=表达式
&= 按位与后赋值 变量&=表达式
^= 按位异或后赋值 变量^=表达式
|= 按位或后赋值 变量|=表达式
15 , 逗号运算符 表达式,表达式,… 左到右 从左向右顺序运算
说明:
?
?
?
?
同一优先级的运算符,运算次序由结合方向所决定
?
一些容易出错的优先级问题
?
上表中,优先级同为1 的几种运算符如果同时出现,那怎么确定表达式的优先级呢?这是很多初学者迷糊的地方。下表就整理了这些容易出错的情况:
wKioL1Y-7SWC2rc4AAJHHolg3W4790.jpg
?
?
?
优先级口诀
?
括号成员第一; ? ? ? ? 括号运算符[]() 成员运算符. ?->
全体单目第二; ? ? ? ? 所有的单目运算符比如++ -- +(正) -(负) 指针运算*&
乘除余三,加减四; ? ? ?这个"余"是指取余运算即%
移位五,关系六; ? ? ? 移位运算符:<< >> ,关系:> < >= <= 等
等于(与)不等排第七; ? 即== !=
位与异或和位或; ? ? ? 这几个都是位运算: 位与(&)异或(^)位或(|)
"三分天下"八九十;?
逻辑或跟与; ? ? ? ? ? 逻辑运算符:|| 和 &&
十二和十一; ? ? ? ? ? 注意顺序:优先级(||) ?底于 优先级(&&)
条件高于赋值, ? ? ? ? ?三目运算符优先级排到 13 位只比赋值运算符和","高
逗号运算级最低! ? ? ? 逗号运算符优先级最低
?
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇[C语言] 实现strlen 下一篇[C语言] 递归求非负数的每一位之和

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: