在c语言中,-m表示对于数字m取反。但是在表达式中,有时候我们会遇到多个带有-m的数的运算,那么这些数的运算顺序是如何的呢?
在c语言中,-m按照从右往左的顺序计算。
例如: -1 - 2 - 3,实际上等价于 -1 - (2 - 3) = -1 - (-1) = 0
再比如:-3 + -2 - 1,实际上等价于 (-3) + (-2) - 1 = -6
这个顺序和一般四则运算的优先级是不同的,需要特别注意。
c语言中的运算符优先级如下(由高到低):
1.括号()
2.单目运算符(按照出现的顺序):++, --, !,~(取反), +(正号), -(负号),&(地址运算符), *(指针)
3.乘除(*, /, %)
4.加减(+, -)
5.移位运算符(<<, >>)
6.关系运算符(<, <=, >, >=)
7.相等运算符(==, !=)
8.按位与(&)
9.按位异或(^)
10.按位或(|)
11.逻辑与(&&)
12.逻辑或(||)
13.三目运算符( ?: )
14.赋值运算符(按照出现的顺序): =, +=, -=, *=, /=, %=, <<=, >>=, &=, ^=, |=
15.逗号运算符(,)
接下来看一个计算的例子,如下:
-1 + 2 * -3 + 4 / -2
按照优先级,先算乘除,再算加减,-1 + 2 * -3等价于-1 + (-6) = -7,然后再加上4/-2等价于2,所以整个表达式的值为-5。
在c语言中,-m按照从右往左的顺序进行运算。为了避免运算顺序的混淆和错误,我们应该在多个带有-m的数的运算时,用括号将需要的运算先行包裹起来,明确运算的优先级。