" 21天好习惯 "第一期-16 今天学习了运算符的优先级和结合性。
C语言有几十种运算符,被分成十几个级别,有的运算符优先级不同,有的运算符优先级相同。
一下子记住所有运算符的优先级并不容易,还好C语言中大部分运算符的优先级和数学中是一样的。
括号的优先级是最高的,括号中的表达式会优先执行,这样各个运算符的执行顺序就一目了然了。
- 对于表达式a / b * c
按照数学规则应该从左到右,先计算除法,在计算乘法;a / b的结果是 4,4 * c的结果是 8,所以 e 最终的值也是 8。这个推论也从运行结果中得到了证实,C语言的规则和数学的规则是一样的。
当乘法和除法的优先级相同时,编译器很明显知道先执行除法,再执行乘法,这是根据运算符的结合性来判定的。所谓结合性,就是当一个表达式中出现多个优先级相同的运算符时,先执行哪个运算符:先执行左边的叫左结合性,先执行右边的叫右结合性。
/和*的优先级相同,又都具有左结合性,所以先执行左边的除法,再执行右边的乘法。
- 像 +、-、、/ 这样的运算符,它的两边都有要计算的数据,每份这样的数据都称作一个操作数,一个运算符需要 n 个操作数就称为 n 目运算符。例如:
+、-、、/、= 是双目运算符;
++、-- 是单目运算符;
? : 是三目运算符(这是C语言里唯一的一个三目。



