for 循环变量不应在循环体内被改变
9.2.7 ID_for_counterChangedInBody
用于控制循环次数的变量称为“循环变量”,为了使代码具有清晰的静态结构,循环变量只应在 for 语句的第 3 个表达式中被改变。
示例:
for (int i = 0; i < 8; i++) {
....
if (cond) {
++i; // Non-compliant
}
....
}
例中循环变量 i 在多处被改变,循环的执行次数和结束条件变得难以理解,易错且不利于维护。
参考
CWE-1095
C++ Core Guidelines ES.86
MISRA C 2004 13.6
MISRA C++ 2008 6-5-3