C语重来9:运算符优先级

 我们以一个题目,为这一节的开头:

用户输入了两个数,我们求两个数字的平均值.

#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);

上面这种赋值方法不对,不利于我们进行阅读,而且容易产生错误.

也难怪我前面几乎没有见过在赋值的时候进行运算.

最后总结一下,主要就是熟练掌握预算符的优先级,

不要把好几个表达式综合成为一个长的表达式来,这样的话在后面的计算,以及阅读,都不是很友好.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值