了解 C 运算符优先级和结合性:清晰指南
运算符的优先级
如果表达式中存在多个运算符,则运算符的优先级决定首先执行哪个运算符。
让我们考虑一个例子:
<前>00前>
在 C 语言中,08 的优先级 高于10 和22 。因此,39 首先被评估。然后涉及 49 的表达式 被评估为 56 的优先级 高于 64 .
这是一个从高到低的运算符优先级表。 关联性的性质 将很快讨论。
运算符优先级和结合性表
[]
->
.函数调用
数组元素引用
间接成员选择
直接会员选择从左到右!
~
+
-
++
--
&
*
大小
(类型)逻辑否定
按位(1)求补
一元加
一元减号
增量
递减
取消引用(地址)
指针参考
返回对象的大小
类型转换(转换)从右到左*
/
%乘法
划分
余数从左到右+
- 二进制加法(加法)
二进制减法(减法)从左到右<<
>>左移
右移从左到右<
<=
>
>=小于
小于或等于
大于
大于或等于从左到右==
!=等于
不等于从左到右&按位AND从左到右^按位异或从左到右|按位OR从左到右&&逻辑AND从左到右||逻辑OR从左到右?:条件运算符从右到左=
*=
/=
%=
+=
-=
&=
^=
|=
<<=
>>=简单赋值
分配产品
分配商
分配余数
分配总和
分配差异
分配按位与
分配按位异或
分配按位或
分配左移
分配右移从右到左,表达式分隔符从左到右
运算符的结合性
运算符的结合性决定了表达式计算的方向。例如,
<前>19前>
这里,a 的值被分配给 b,而不是相反。这是因为 79 的结合性 运算符是从右到左。
另外,如果存在两个具有相同优先级(优先级)的运算符,则结合性决定它们执行的方向。
让我们考虑一个例子:
<前>27前>
在这里,运算符 83 和96 具有相同的优先级。并且,它们的关联性是从左到右。因此,108 首先执行。
上面的表达式相当于:
<前>31前>
注意: 如果语句有多个运算符,可以使用括号115 使代码更具可读性。
目录
C语言