我们以一个题目,为这一节的开头:
用户输入了两个数,我们求两个数字的平均值.
#include<stdio.h>
int main()
{
int a, b;
scanf_s("%d %d", &a, &b);
double c = (a + b) / 2.0;//除以2.0的原因是两个数的平均值可能为小数。
//这也是我第一次看到在定义变量的时候来进行运算。
printf("%d和%d的平均值=%f\n", a, b,c);
return 0;
}
列出一张有关于优先级的表格:
优先级 | 运算符 | 运算 | 结合关系 | 举例 |
1 | + | 单目不变 | 自右向左 | a*+b |
1 | - | 单目取负 | 自右向左 | a*-b |
2 | * | 乘 | 自左向右 | a*b |
2 | / | 除 | 自左向右 | a/b |
2 | % | 取余 | 自左向右 | a%b |
3 | + | 加 | 自左向右 | a+b |
3 | - | 减 | 自左向右 | a-b |
4 | = | 赋值 | 自右向左 | a=b |
注意,这里的加减是单目运算,不是双目运算,双目是两个算子中间的运算,而单目是一个算子取相反数,或者不变.
比如,前两行的最后的两个例子,第二个就是先把后面的b取它的相反数,然后再与前面的a相乘.
(单目运算符的算子,一定出现在运算符的右边,所以是自右向左的运算)
还有一点注意,在C语言中,赋值不是一个语句,而是一个运算符.也就是"="的这个运算,也是有结果的.
赋值的运算举个例子:
a=b=6
就是先把6赋值给b,在把b的值赋给a.
再举个例子:
a=b+5
这个式子就是根据运算符的优先级顺序,先是"+"的优先级高,那就是先算"b+5",然后再把"b+5"的值赋值给a.就是先是,"+"的从左向右,变成"="的从右向左.
根据这样的运算的方法,就出现了一种新的赋值的方法:所谓的"嵌入式赋值"
比如下面的代码:
int a=6;
int b;
int c=1+(b=a);
上面这种赋值方法不对,不利于我们进行阅读,而且容易产生错误.
也难怪我前面几乎没有见过在赋值的时候进行运算.
最后总结一下,主要就是熟练掌握预算符的优先级,
不要把好几个表达式综合成为一个长的表达式来,这样的话在后面的计算,以及阅读,都不是很友好.