C语⾔运算符的优先级以及结合⽅向
1:运算符的结合⽅向
在表达式中,优先级较⾼的先于优先级较低的进⾏运算。⽽在⼀个运算量两侧的相同时,则按运算符的结合性所规定的结合⽅向处理。
C语⾔中各运算符的结合性分为两种,即左结合性(⾃左⾄右)和右结合性(⾃右⾄左)。
例如的结合性是⾃左⾄右,即先左后右。如有表达式x-y+z则y应先与“-”号结合,执⾏x-y运算,然后再执⾏+z的运算。这种⾃左⾄右的结合⽅向就称为“左结合性”。⽽⾃右⾄左的结合⽅向称为“右结合性”。最典型的右结合性运算符是。如x=y=z,由于“=”的右结合性,应先执⾏y=z再执⾏x=(y=z)运算。
2:优先级
说明:
同⼀优先级的运算符,运算次序由结合⽅向所决定。
简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符(好像不对)
关系运算符>逻辑运算符
算术运算符>关系运算符
优先级运算符名称或含义使⽤形式结合⽅向说明
1
[]数组下标数组名[常量表达式]
左到右
()圆括号(表达式)/函数名
(形参表)
.成员选择(对
象)
对象.成员名
-
>成员选择(指
针)
对象指针->成员名
++后置⾃增运算符++变量名单⽬运算符--后置⾃减运算符--变量名单⽬运算符
2
-负号运算符-表达式
右到左
单⽬运算符(类型)强制类型转换(数据类型)表达式
++前置⾃增运算符变量名++单⽬运算符--前置⾃减运算符变量名--单⽬运算符*取值运算符*指针变量单⽬运算符&取地址运算符&变量名单⽬运算符!逻辑⾮运算符!表达式单⽬运算符~按位取反运算符~表达式单⽬运算符sizeof长度运算符sizeof(表达式)
3
/除表达式/表达式
左到右
双⽬运算符*乘表达式*表达式双⽬运算符
%余数(取模)整型表达式/整型表
达式
双⽬运算符
4+加表达式+表达式
左到右
运算符优先级图片双⽬运算符-减表达式-表达式双⽬运算符
5<<;左移变量<<;表达式
左到右
双⽬运算符>>右移变量>>表达式双⽬运算符
6>⼤于表达式>表达式
左到右
双⽬运算符>=⼤于等于表达式>=表达式双⽬运算符<⼩于表达式<;表达式双⽬运算符<=⼩于等于表达式<=表达式双⽬运算符
7==等于表达式==表达式
左到右
双⽬运算符!=不等于表达式!= 表达式双⽬运算符
8&按位与表达式&表达式左到右双⽬运算符9^按位异或表达式^表达式左到右双⽬运算符10|按位或表达式|表达式左到右双⽬运算符11&&逻辑与表达式&&表达式左到右双⽬运算符12||逻辑或表达式||表达式左到右双⽬运算符
13?:条件运算符表达式1? 表达式2:
表达式3
右到左三⽬运算符=赋值运算符变量=表达式
/=除后赋值变量/=表达式
14
/=除后赋值变量/=表达式
右到左<<=左移后赋值变量<<=表达式
>>=右移后赋值变量>>=表达式
&=按位与后赋值变量&=表达式
^=按位异或后赋值变量^=表达式
|=按位或后赋值变量|=表达式
15,逗号运算符表达式,表达式,…左到右从左向右顺
序运算

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。