1. 常见的运算符
以下为简要总结的运算符的优先级:
优先级 | 运算符 | 运算 | 结合关系 | 举例 |
---|---|---|---|---|
1 | + | 单目不变 | 自右向左 | a*+b |
1 | - | 单目取负 | 自右向左 | a*-b |
2 | * | 乘 | 自左向右 | a*b |
2 | / | 除 | 自左向右 | a/b |
2 | % | 取余 | 自左向右 | a%b |
3 | + | 加 | 自左向右 | a+b |
3 | - | 减 | 自左向右 | a-b |
4 | = | 赋值 | 自右向左 | a=b |
在上述的表中,我们可以看到乘除加减等运算符的优先级和运算顺序是符合我们正常认知的。
位于第一优先级的两个运算符+
和-
,起的作用是数学中的正号和负号。在运算中,当然要首先将变量或者说是数字的正负定义清楚,在进行其他的运算。
位于最低运算级的赋值号=
,说明在C语言中赋值符也是参与运算的。
此外,如果表达式中存在括号()
,其优先级是最高的。
2.特殊的运算符
a.第一种特殊运算符
运算符 | 含义 |
---|---|
a+=1 | a=a+1 |
a-=1 | a=a-1 |
a * =3+8 | a=a*(3+8) |
a/=1+7 | a=a/(1+7) |
b.第二种特殊运算符
前缀后缀运算符
表达式 | 运算 | 表达式的值 |
---|---|---|
count++ | 给count加1 | count原来的值 |
count- - | 给count减1 | count原来的值 |
++count | 给count加1 | count加1后的值 |
- -count | 给count减1 | count减1后的值 |
运算符作为后缀的表达式,其表达式自身是变量运算前的值;
运算符作为前缀的表达式,其表达式自身是变量运算后的值;
但是这四种运算的结果都是给变量加1或减1了。
贴一段代码来帮助理解。
#include <stdio.h>
int main()
{
int count = 5;
printf("count++表达式的值为%d\n", count++);
printf("count的值为%d\n", count);
printf("++count表达式的值为%d\n", ++count);
printf("此时count的值为%d\n", count);
return 0;
}
输出结果:
count++表达式的值为5
count的值为6
++count表达式的值为7
此时count的值为7