☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

逗号表达式的子表达式应具有必要的副作用

10.2.12 ID_invalidCommaSubExpression
目录 › next › previous

缺少必要副作用的逗号子表达式没有意义,往往意味着逻辑错误。

设逗号表达式中逗号运算符的子表达式个数为 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
}

相关

ID_forbidCommaExpression
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.