注意运算符优先级,避免非预期的结果
10.3.1 ID_unexpectedPrecedence
对运算符优先级的错误理解是产生逻辑错误的主要原因之一。
位运算、赋值、三元等表达式作为子表达式时,合理使用括号既能保证正确性,又能提高可读性。由于运算符的特性各不相同,较为灵活,难以用一条规则来规范,本规则集合将分开讨论,与优先级有关的规则均作为本规则的相关规则以供参考。
示例:
int foo(bool cond) {
return 1 + cond? 2: 3; // Rather suspicious
}
加号的优先级大于三元运算符,但 cond 是 bool 型变量,所以这种情况十分可疑。
应合理使用括号:
int foo(bool cond) {
return 1 + (cond? 2: 3); // Right
}
相关
ID_macro_expNotEnclosed
ID_macro_paramNotEnclosed
ID_illBoolOperation
ID_assignmentAsSubExpression
ID_nonPostfixSubCondition
ID_oddSubscripting