C语言运算符的优先级和结性
2年前 (2024-04-27)
本节我们从一个例子入手讲解,请看下面的代码:
运行结果:#include <stdio.h>
int main(){
int a = 16, b = 4, c = 2;
int d = a + b * c;
int e = a / b * c;
printf( "d=%d, e=%d\n", d, e);
return 0;
}
d=24, e=8
1) 对于表达式
a + b * c,如果按照数学规则推导,应该先计算乘法,再计算加法;b * c的结果为 8,a + 8的结果为 24,所以 d 最终的值也是 24。从运行结果可以看出,我们的推论得到了证实,C语言也是先计算乘法再计算加法,和数学中的规则一样。先计算乘法后计算加法,说明乘法运算符的优先级比加法运算符的优先级高。所谓优先级,就是当多个运算符出现在同一个表达式中时,先执行哪个运算符。
C语言有几十种运算符,被分成十几个级别,有的运算符优先级不同,有的运算符优先级相同,我们在《C语言运算符的优先级和结性一览表》中给出了详细的说明,大家可以点击链接自行查阅。
一下子记住所有运算符的优先级并不容易,还好C语言中大部分运算符的优先级和数学中是一样的,大家在以后的编程过程中也会逐渐熟悉起来。如果实在搞不清,可以加括号,就像下面这样:
括号的优先级是最高的,括号中的表达式会优先执行,这样各个运算符的执行顺序就一目了然了。int d = a + (b * c);
2) 对于表达式
a / b * c,查看了《C语言运算符的优先级和结性一览表》的读者会发现,除法和乘法的优先级是相同的,这个时候到底该先执行哪一个呢?按照数学规则应该从左到右,先计算除法,在计算乘法;
a / b的结果是 4,4 * c的结果是 8,所以 e 最终的值也是 8。这个推论也从运行结果中得到了证实,C语言的规则和数学的规则是一样的。当乘法和除法的优先级相同时,编译器很明显知道先执行除法,再执行乘法,这是根据运算符的结性来判定的。所谓结性,就是当一个表达式现多个优先级相同的运算符时,先执行哪个运算符:先执行左边的叫左结性,先执行右边的叫右结性。
/和*的优先级相同,又都具有左结性,所以先执行左边的除法,再执行右边的乘法。3) 像 +、-、*、/ 这样的运算符,它的两边都有要计算的数据,每份这样的数据都称作一个操作数,一个运算符需要 n 个操作数就称为 n 目运算符。例如:
+、-、*、/、= 是双目运算符;
++、-- 是单目运算符;
? : 是三目运算符(这是C语言里的一个三目元算符,后续我们将会讲解)。
总结
当一个表达式现多个运算符时,C语言会先比较各个运算符的优先级,按照优先级从高到低的顺序依次执行;当遇到优先级相同的运算符时,再根据结性决定先执行哪个运算符:如果是左结性就先执行左边的运算符,如果是右结性就先执行右边的运算符。C语言的运算符众多,每个运算符都具有优先级和结性,还拥有若干个操作数,为了方便记忆和对比,我们在《C语言运算符的优先级和结性一览表》中将它们全部列了出来。对于没有学到的运算符,大家不必深究,一带而过即可,等学到时再来回顾。
- 随机文章
- 中国马尔代夫价格(中国游客热衷的马尔代夫岛屿价格公开)
- 南亚马尔代夫视频(南亚马尔代夫一分钟视频震撼你的眼球)
- 中方马尔代夫债务(方马尔代夫陷债务危机,吁求国际援助)
- 宁德的小马尔代夫(宁德打造的美丽海岛,堪比小马尔代夫)
- 印度马尔代夫泰国(三大度假胜地:印度、马尔代夫和泰国)
- 昆明马尔代夫航线(昆明至马尔代夫直飞开通!快来抢票!)
- 环球之旅马尔代夫(全球环游之马尔代夫:海洋天堂的探索)
- 看看马尔代夫直播(直播马尔代夫:虚拟旅游众享海岛风光)
- 漳州马尔代夫位置(漳州市首家模拟马尔代夫度假村落地!)
- 福绵马尔代夫年票(重头戏!福绵马尔代夫推出超值年票!)
- 西山温泉马尔代夫(西山温泉体验,让你犹如身处马尔代夫)
- 玉林马尔代夫草莓(玉林草莓出口马尔代夫,惊艳当地市场)
- 老板罗成马尔代夫(罗成等投资是马尔代夫最大投资者之一)
- 沙滩蓝色马尔代夫(马尔代夫度假胜地蜜月沙滩的蓝色奇观)
- 嘉嘉 马尔代夫(嘉嘉在马尔代夫度假:天堂般的海岛之旅)
- 荷兰马尔代夫海拔(荷兰团队在马尔代夫成功实现海拔升高)
- 西沙 马尔代夫(西沙与马尔代夫:两个美丽岛国的交流与合作)
- 邯郸马尔代夫导航(邯郸旅行社开通赴马尔代夫一日游导航)
- 马尔代夫出什么鱼(马尔代夫珊瑚礁下的丰富海洋生物资源)
- 马尔代夫刺激消费(马尔代夫推出促销活动,刺激游客消费)
- 颜色 马尔代夫(探寻马尔代夫那璀璨蔚蓝,追寻海岛度假胜地之美)
- 马尔代夫互免协议(马尔代夫宣布与多个国家互免签证协议)
- 青岛马尔代夫在哪(青岛有马尔代夫风情的旅游胜地在哪?)
- 航拍嘉祥马尔代夫(嘉祥马尔代夫风光无限,航拍惊艳全球)
- 珠海 马尔代夫(珠海市将建立类似马尔代夫的水上居民区,引发舆论关注)
- 离开马尔代夫感言(太美好了!马尔代夫之旅让人难以忘怀)
- 马尔代夫原地跑步(马尔代夫上空旅游者进行原地跑步体验)
- 马尔代夫局势现状(马尔代夫政治动荡,总统面临弹劾审判)
- 南通 小马尔代夫(江苏南通建成“小马尔代夫”风情小镇)
- 马尔代夫对决视频(马尔代夫较量:两组团队为了胜利而战)
