在C语言中,运算符的优先级决定了表达式中运算符的执行顺序。以下是C语言中常见运算符的优先级列表,从高到低:
-
圆括号
()
:最高优先级,用于强制改变表达式的计算顺序。 -
#include <stdio.h> int main() { int result = 2 + 3 * 4; printf("Without parentheses: %d\n", result); // 输出:14 result = (2 + 3) * 4; printf("With parentheses: %d\n", result); // 输出:20 return 0; }
在第一个表达式中,乘法优先于加法,因此先计算3乘以4,再加2,结果为14。在第二个表达式中,由于有圆括号,先计算括号内的加法,结果为5,再乘以4,结果为20。
-
单目递增和递减运算符
++
--
:作用于变量时优先级高于其他运算符。 -
#include <stdio.h> int main() { int a = 5, b = 5, c; c = ++a * 2; printf("Pre-increment: %d\n", c); // 输出:12 c = b++ * 2; printf("Post-increment: %d\n", c); // 输出:10 return 0; }
在第一个表达式中,
++a
先递增a,然后再乘以2,结果为12。在第二个表达式中,b++
先用b的原始值乘以2,然后再递增b,结果为10。 -
取地址运算符
&
和间接访问运算符*
:优先级高于其他运算符。 -
乘法和除法
*
/
%
:乘法、除法和取模运算的优先级相同,按从左到右顺序计算。 -
加法和减法
+
-
:加法和减法运算的优先级相同,按从左到右顺序计算。 -
关系运算符
<
>
<=
>=
:用于比较两个表达式的值,优先级高于相等性运算符但低于算术运算符。 -
相等性运算符
==
!=
:用于检查两个表达式是否相等,优先级低于关系运算符但高于逻辑运算符。 -
逻辑非
!
:用于对表达式取反,优先级低于所有关系和相等性运算符。 -
逻辑与
&&
:用于逻辑与运算,优先级低于逻辑非。 -
逻辑或
||
:用于逻辑或运算,优先级低于逻辑与。 -
条件运算符
? :
:用于根据条件选择执行不同的操作,优先级较低。 -
赋值运算符
=
:用于给变量赋值,优先级最低。