C语言篇七:操作符优先级

前言

复杂表达式的求值顺序是由3个因素决定的:操作符优先级操作符的结合性操作符是否控制执行的顺序
两个相邻的操作符哪个先执行取决于它们的优先级,如果两者优先级相同,那么他们的执行顺序由他们的结合性决定。最后,有4个操作符,他们可以对整个表达式的求值顺序施加控制,它们或者保证某个子表达式能够在另一个子表达式的所有求值过程完成之前进行求值,或者可能使某个表达式被完全跳过不在求值。

术语

lexp表示左值表达式,rexp表示右值表达式。记住,左值意味着一个位置,而右值意味着一个值。

操作符优先级

操作符描述用法示例结果类型结合性是否控制求值求值顺序
()聚组(表达式)与表达式同N/A
()函数调用rexp(rexp,…,rexp)rexpL-R
[]下标引用rexp[rexp]lexpL-R
.访问结构成员lexp.member_namelexpL-R
->访问结构指针成员rexp->member_namelexpL-R
++后缀自增lexp++rexpL-R
后缀自减lexp–rexpL-R
!逻辑反!rexprexpR-L
~按位取反~rexprexpR-L
+单目,表示正值+rexprexpR-L
-单目,表示负值-rexprexpR-L
++前缀自增++lexprexpR-L
前缀自减–lexprexpR-L
*间接访问*rexplexpR-L
&取地址&lexprexpR-L
sizeof取其长度,以字节表示sizeof rexp/sizeof(类型)rexpR-L
(类型)类型转换(类型)rexprxepR-L
*乘法rexp*rexprexpL-R
/除法rexp/rexprexpL-R
%整数取余rexp%rexprexpL-R
+加法rexp+rexprexpL-R
-减法rexp-rexprexpL-R
<<左移位rexp<<rexprexpL-R
>>右移位rexp>>rexprexpL-R
>大于rexp>rexprexpL-R
>=大于等于rexp>=rexprexpL-R
<小于rexp<rexprexpL-R
<=小于等于rexp<=rexprexpL-R
==等于rexp==rexprexpL-R
!=不等于rexp!=rexprexpL-R
&位与rexp&rexprexpL-R
^位异或rexp^rexprexpL-R
位或rexp或rexprexpL-R
&&逻辑与rexp&&rexprexpL-R
逻辑或rexp逻辑或rexprexpL-R
?:条件操作符rexp?rexp:rexprexpN/A
=赋值lexp=rexprexpR-L
+=lexp+=rexprexpR-L
-=lexp-=rexprexpR-L
*=lexp*=rexprexpR-L
/=lexp/=rexprexpR-L
%=lexp%=rexprexpR-L
<<=lexp<<=rexprexpR-L
>>=lexp>>=rexprexpR-L
&=lexp&=rexprexpR-L
^=lexp^=rexprexpR-L
,逗号rexp,rexprexpL-R

其他

自增、自减是非常特殊的运算符,需要特别注意。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值