本文节选自《LPC语言基础教程:从零学习游戏开发》,版权归@mudren,欢迎转载,但必须注明来源(mud.ren)。
第四节 运算符的优先级
优先级指的是,如果一个表达式包含多个运算符,哪个运算符应该优先执行。各种运算符的优先级是不一样的。
3 + 4 * 5;
上面示例中,表达式3 + 4 * 5里面既有加法运算符(+),又有乘法运算符(*)。由于乘法的优先级高于加法,所以会先计算4 * 5,而不是先计算3 + 4。
如果两个运算符优先级相同,则根据运算符是左结合,还是右结合,决定执行顺序。大部分运算符是左结合(从左到右执行),少数运算符是右结合(从右到左执行),比如赋值运算符(=)。
5 * 6 / 2;
上面示例中,*和-的优先级相同,它们都是左结合运算符,所以从左到右执行,先计算5 * 6,再计算6 / 2。
运算符的优先级顺序很复杂。下面是部分运算符的优先级顺序(按照优先级从高到低排列)。
- 圆括号(
()) - 自增运算符(
++),自减运算符(--) - 一元运算符(
+和-) - 乘法(
*),除法(/) - 加法(
+),减法(-) - 关系运算符(
<、>等) - 赋值运算符(
=)
由于圆括号的优先级最高,可以使用它改变其他运算符的优先级。
int x = (3 + 4) * 5;
上面示例中,由于添加了圆括号,加法会先于乘法进行运算。
完全记住所有运算符的优先级没有必要,解决方法是多用圆括号,防止出现意料之外的情况,也有利于提高代码的可读性。