for 中企图通过 `i` 控制循环结束
for (int i = 0; i < 30; ++i) { // Do something other. foo(); bar(); baz(); // ... if (/* Some condition */) { // 满足 xxx 条件, 退出循环. i = INT_MAX; } }
这段简短的代码中, 隐藏着一个 bug.
当 Some Condition 满足条件时, `i = INT_MAX` 会执行, 此时作者期待 i == INT_MAX 从而使 i < 30 为 false 而退出循环.
但是问题就在于, 执行完 i = INT_MAX 后, 循环引用计数器 i 会执行 for 循环体中的 ++i, 导致 i 溢出, 变为一个超级小的负数, 违背了作者的原意.