一、C 语言中各种运算符的优先级可以影响表达式的计算顺序。以下是 C 语言中常见运算符的优先级列表,按照从高到低的顺序排列:
()
:括号运算符[]
:数组下标运算符.
和->
:成员访问运算符++
和--
:自增和自减运算符+
和-
:正负号和加减运算符(一元)*
、/
和%
:乘、除和取模运算符+
和-
:加法和减法运算符(二元)<<
和>>
:左移和右移运算符<
、<=
、>
、>=
:关系运算符==
和!=
:相等性运算符&
:按位与^
:按位异或|
:按位或&&
:逻辑与||
:逻辑或?:
:条件运算符=
、+=
、-=
、*=
、/=
、%=
、&=
、^=
、|=
、<<=
、>>=
:赋值运算符
在表达式中,优先级高的运算符会比优先级低的运算符先进行运算。如果不确定,建议使用括号来明确表达式的运算顺序,以避免混淆和错误。
二、以下是 C 语言中常见运算符的详细解释和示例:
-
()
:括号运算符- 用于控制运算符的优先级,并指定运算的顺序。
- 示例:
result = (a + b) * c;
-
[]
:数组下标运算符- 用于访问数组中特定索引的元素。
- 示例:
int arr[5]; int x = arr[2];
-
.
和->
:成员访问运算符- 用于访问结构体和联合体的成员。
- 示例:
struct Point { int x; int y; }; struct Point p; p.x = 10;
-
++
和--
:自增和自减运算符- 用于增加或减少变量的值。
- 示例:
int a = 5; a++;
-
+
和-
:正负号和加减运算符(一元)- 一元正号和负号,用于表示正数和负数,也可用于增加或减少值。
- 示例:
int a = 5; int b = -a;
-
*
、/
和%
:乘、除和取模运算符- 乘法、除法和取模运算。
- 示例:
int result = 10 * 5; int remainder = 10 % 3;
-
+
和-
:加法和减法运算符(二元)- 用于相加或相减。
- 示例:
int sum = 10 + 5; int difference = 10 - 5;
-
<<
和>>
:左移和右移运算符- 用于按位移动操作数的二进制位。
- 示例:
int x = 5; int shifted = x << 2;
-
<
、<=
、>
、>=
:关系运算符- 用于比较两个值之间的关系。
- 示例:
int a = 5; int b = 10; if (a < b) { /* do something */ }
-
==
和!=
:相等性运算符- 用于检查两个值是否相等或不相等。
- 示例:
int a = 5; int b = 5; if (a == b) { /* do something */ }
-
&
:按位与- 用于对两个操作数的对应位执行逻辑与运算。
- 示例:
int result = 5 & 3;
-
^
:按位异或- 对两个操作数的对应位执行逻辑异或运算。
- 示例:
int result = 5 ^ 3;
-
|
:按位或- 对两个操作数的对应位执行逻辑或运算。
- 示例:
int result = 5 | 3;
-
&&
:逻辑与- 当两个操作数都为真时结果为真。
- 示例:
if (x > 0 && y < 10) { /* do something */ }
-
||
:逻辑或- 当两个操作数至少有一个为真时结果为真。
- 示例:
if (x == 0 || y == 0) { /* do something */ }
-
?:
:条件运算符- 表示条件表达式,根据条件为真或假选择不同的值。
- 示例:
int result = (x > 0) ? 10 : 20;
-
=
、+=
、-=
、*=
、/=
、%=
、&=
、^=
、|=
、<<=
、>>=
:赋值运算符- 用于给变量赋值或者对变量进行运算后再赋值。
- 示例:
int a = 5; a += 3;
了解和使用这些运算符的优先级可以帮助你编写更清晰和正确的表达式,确保程序按照预期进行计算。