逗号表达式的子表达式应具有必要的副作用
10.2.12 ID_invalidCommaSubExpression
缺少必要副作用的逗号子表达式没有意义,往往意味着逻辑错误。
设逗号表达式中逗号运算符的子表达式个数为 n(n >= 2),如果最后一个子表达式的值可影响程序状态,前 n - 1 个子表达式应具备副作用,否则所有子表达式都应具备副作用。
示例:
void foo(int& a, int& b) {
a, b = 0, 1; // Non-compliant
}
例中逗号表达式有 3 个子表达式,只有第 2 个子表达式有效,第 1 和第 3 个没有意义。
应改为:
void foo(int& a, int& b) {
a = 0, b = 1; // Compliant, but bad
}
本规则集合不建议使用逗号表达式,将逗号表达式拆分成合理的语句是更好的选择,如:
void foo(int& a, int& b) {
a = 0;
b = 1; // Compliant, good
}