使用运算符 -= 的陷阱
2012年7月28日
没有评论
一般的编程语言中都提供了+=、-=这样的运算符,例如
var para = 1; para = para + 4; //等价于 para += 4; //同样 para = para - 4; //等价于 para -= 4;
我的编程习惯一直比较倾向后者,最近在写php代码时候发现了一个小陷阱,如下代码:
$cnt = 100; $offset1 = 80; $offset2 = 120; $cnt -= $offset1 + $offset2;
我的原意是$cnt – $offset1 + $offset2,结果为140,但是真实的结果是-100。这也是典型运算符优先级导致的问题,原来 + 的优先级要高于 -=,所以自然结果就是-100了。经测试java、php、javascript、python都是这样。
使用 +=、-= 时如果超过两个操作数,一定要清楚到底在做什么,特别要注意运算符的优先级。
平时我是记不住那么多运算符的优先级顺序,在处理多个参数进行混合运算时都是祭出法宝,那就是使用括号来控制优先级。