附录2 C语言中的运算符及其优先级
附录2 C语言中的运算符及其优先级
优先级 运算符 名称或含义 使用形式 结合方向 说明
[] 数组下标 数组名[常量表达式]
1 (形参表) 左到右
() 圆括号
. 成员选择(对象) 对象.成员名
-> 成员选择(指针) 对象指针->成员名
- 负号运算符 -表达式 单目运算符
(类型) 强制类型转换 (数据类型)表达式
++ 自增运算符 ++变量名/变量名++ 单目运算符
2 * 取值运算符 *指针变量 右到左 单目运算符
-- 自减运算符 --变量名/变量名-- 单目运算符
& 取地址运算符 &变量名 单目运算符
! 逻辑非运算符 !表达式 单目运算符
~ 按位取反运算符 ~表达式 单目运算符
sizeof 长度运算符 sizeof(表达式)
/ 除 表达式/表达式 双目运算符
3 左到右
* 乘 表达式*表达式 双目运算符
% 余数(取模) 双目运算符
4 左到右
5 左到右
+ 加 表达式+表达式 双目运算符
- 减 表达式-表达式 双目运算符
<< 左移 变量<<表达式 双目运算符
>> 右移 变量>>表达式 双目运算符
> 大于 表达式>表达式 双目运算符
6 左到右
>= 大于等于 表达式>=表达式 双目运算符
< 小于 表达式<表达式 双目运算符
<= 小于等于 表达式<=表达式 双目运算符
== 等于 表达式==表达式 双目运算符
!= 不等于 表达式!= 表达式 双目运算符
& 按位与 表达式&表达式 双目运算符 8 最长的歌 左到右 感恩手抄报
^ 按位异或 表达式^表达式 双目运算符 9 左到右
| 按位或 表达式|表达式 双目运算符 10 左到右
&& 逻辑与 表达式&&表达式 双目运算符 11 左到右
|| 逻辑或 表达式||表达式 双目运算符 12 左到右
?: 条件运算符 三目运算符 13 右到左
= 赋值运算符 变量=表达式
14 右到左
/= 除后赋值 变量/=表达式
*= 乘后赋值 变量*=表达式
%= 取模后赋值 变量%=表达式
306
(表达式)/函数名
整型表达式/整型表
达式
表达式1? 表达式2:
表达式3
7 左到右
附录2 C语言中的运算符及其优先级
+= 加后赋值 变量+=表达式
-= 减后赋值 变量-=表达式
<<= 左移后赋值 变量<<=表达式
>>= 右移后赋值 变量>>=表达式
&= 按位与后赋值 变量&=表达式
^= 按位异或后赋值 变量^=表达式
|= 按位或后赋值 变量|=表达式
15 , 逗号运算符 表达式,表达式,… 左到右
说明:
从左向右顺
序运算
同一优先级的运算符,运算次序由结合方向所决定。
由于C语言中运算符多,优先级复杂,难以记忆,针对上述运算符,我们可以归纳成几名口
诀,以便于记忆:
优先级口诀
括号成员第一; 括号运算符[]() 成员运算符. ->
全体单目第二; 所有的单目运算符比如++ -- +(正) -(负) 指针运算*&
乘除余三,加减四; 这个"余"是指取余运算即%
移位五,关系六; 移位运算符:<< >> ,关系:> < >= <= 等
等于(与)不等排第七; 即== !=
位与异或和位或; 这几个都是位运算: 位与(&)异或(^)位或(|)
"三分天下"八九十;
逻辑或跟与; 逻辑运算符:|| 和 &&
十二和十一; 注意顺序:优先级(||) 底于 优先级(&&)
条件高于赋值, 三目运算符优先级排到 13 位只比赋值运算符和","高
逗号运算级最低! 逗号运算符优先级最低
C优先级的口诀 收藏
学习C语言也有一段时间了,感觉C语言的运算符优先级很难记住,特别是对于初学者而言!
也许你会说没有记住没关系,用括号来改变优先级就可以了。但是很多情况下,因为依赖括
号很容易导致程序可读性差,当然我不是反对加括号,只是提倡恰到好
处。总之,还是记住好些,读别人的程序也方便点。近来翻看了一下优先级,感觉还是有规
律可循的,拿来和大家分享,希望对大家有帮助!
先给出C语言的运算符优先级表:
C语言运算符优先级表(由上至下,优先级依次递减)
运算符
结合性
307
附录2 C语言中的运算符及其优先级
从严治党心得体会 红豆诗词
()
[] -> .
自左向右
!
~ ++ -- - (type) * & sizeof
自右向左
*
/ %
自左向红色翡翠 右
+
-
自左向右
<< >>
自左向右
< <=
> >=
自左向右
== !=
自左向右
&
308
附录2 C语言中西关文化 的运算符及其优先级
自左向右
^
自左向右
|
自左向右
&&
自左向右
||
自左向右
?:
自右向左
Assignments
自右向左
,
自左向右
第一、像() [] -> .之类的理所当然是最优先的,其实它们压根也不算什么运算符了
第二、除了上面的四种运算符之外,接下来就是单目运算符,也就是!
~ ++ -- - (type) * & sizeof 了。记住它们的顺序可是自右向左啊!其实结合实例是
很容易理解的,比如i++等。
第三、跟着就是双目运算符了,也是C语言运算符优先级中文职类工作 最容易让人混淆的地方了。其 实
309
附录2 C语言中的运算符及其优先级
也没有那么可怕,你认真观察就会发现。在双目运算符中,算术运算 符优先级最高,然后
是移位运算符,接着是关系运算符,再着是逻辑运算符。不过这边需要说的是,在关系运算
符中,< <=
> >=比== !=的优先级来得高。此外,在逻辑运算符中,与运算又比或运算优先级来得
高,异或则处于二者之间。同样的,你可以苹果的寓意 类比出&&与||的优先级关系.
第四、在双目操作符之后,就是三目操作符了,没有什么好说的了。
第五、然后是赋值操作符,你也许会把赋值操作符与三目运算符的优先级搞混。没有关系,
我想你一定写过这样的语句(如果没有,请你记住!):max = (a>b)?a:b; ,从这个语句里,
你就不难记住赋值运算符为什么比三目运算符的优先级低了!
第六、逗号运算符是分割各个子语句的(感觉这么说有点不准确,不过我想大家会明白我的
意思的),自然优先级最低了,我想这个应该不是很容易混淆的。
总结一下,按运算符优先级从高到低:单目运算符->双目运算符->三目运算符->赋值
运算符->逗号运算符
特别在双目运算符中,按 运算符优先级从高到低:算术运算符->移位运算符->关系
运算符(其中== 和 !=优先级又较低)->逻辑运算符(按位与-〉按位异或-〉按位或-〉逻
辑与-〉逻辑或)!
310
本文发布于:2023-04-22 12:28:50,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/fan/89/842700.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |