C语言运算符优先级(大全)

233 阅读3分钟

C语言运算符优先级(大全)

🔺按照运算符的操作对象(变量或常量)的个数分为三类: 单目运算符双目运算符三目运算符

🔺注意:当优先级相同时,按结合方向来进行计算

C语言运算符优先级(大全)

1.

运算符名称
[]数组下标
()圆括号
.成员选择
->成员选择

🔴结合方向从左到右

"." 和 "->"多用在结构体(引用类,共用体)选择成员时使用。

直接访问结构的成员时用点运算符,通过指针访问结构的成员用箭头运算符。

 struct student
 {
 char name[20];
 int age;
 }A
 ​
 对于A而言,如果A是个指针,则使用箭头运算符,(A->name)反之(A.name)。

2.

运算符名称
-负号
++自增
--自减
*取值(指针)
&取地址
逻辑非
(类型)强制转换类型
sizeof求长度
~按位取反

🔵 结合方向从右到左

~:按位取反是对二进制位补码取反

快捷算法:

X取反结果:~X=-(X+1)

 对正数5按位取反,~5
 十进制 5
 二进制原码 00000101
 二进制补码 00000101(正数原码=补码)
 按位取反: 11111010(补码)
 二进制原码 10000110
 十进制 -6
 ​
 对负数5按位取反,~-5
 十进制 -5
 二进制原码 10000101
 二进制补码 11111011(负数补码=反码+1)
 按位取反: 00000100(补码)
 二进制原码 00000100(正数原码=补码)
 十进制 4

3.

运算符名称
/
*
%取余

🔴结合方向从左到右

4.

运算符名称
+
-

🔴 结合方向从左到右

5.

运算符名称
<<左移
>>右移

🔴 结合方向从左到右

6.

运算符名称
大于
>=大于等于
<小于
<=小于等于

🔴结合方向从左到右

7.

运算符名称
==等于
!=不等于

🔴结合方向从左到右

8.

运算符名称
&按位与

🔴结合方向从左到右

二进制位,两个均为1的取1,剩下的取0

9.

运算符名称
^按位异或

🔴结合方向从左到右

二进制位,相同的为0,不同的为1

10.

运算符名称
按位或

🔴结合方向从左到右

二进制位,有含1的取1,全为0的取0

11.

运算符名称
&&逻辑与

🔴结合方向从左到右

12.

运算符名称
逻辑或

🔴结合方向从左到右

13.

运算符名称
条件运算符

🔵 结合方向从右到左

14.

运算符名称
=赋值
/=除后赋值
*=乘后赋值
%=取模后赋值
+=加后赋值
-=减后赋值
<<=左移后赋值
>>=右移后赋值
&=按位与后赋值
^=按位异或后赋值
=按位或后赋值

🔵 结合方向从右到左

15.

运算符名称
逗号表达式

🔴结合方向从左到右