C语言的操作符有2个重要的属性:优先级、结合性,这两个属性决定了表达式求值的计算顺序。
一、优先性
优先级指的是,如果一个表达式包含多个运算符,哪个运算符应该优先执行,各种运算符的优先级是不一样的。例如:
3+4*5
表达式3+4*5里面既有加法运算符(+),又有乘法运算符(*)。由于乘法的优先级高于加法,所以先计算4*5,而不是先计算3+4。
二、结合性
如果两个运算符的优先级相同,就没办法确定先计算哪一个了,这时就要看结合性,根据运算符是左结合,还是右结合,决定执行顺序。例如:
5*6/2
*和/的优先级相同,它们都是左结合运算符,所以从左到右执行。
运算符的优先级顺序很多,下面是部分运算符的优先级顺序(按照优先级从高到低排列)。
圆括号()
自增运算符++,自减运算符--
单目运算符(+和-)
乘法(*),除法(/)
加法(+),减法(-)
关系运算符(<、>等)
赋值运算符(=)
由于圆括号的优先级最高,可以使用它改变其它运算符的优先级。