上周维护一个模块时,发现代码逻辑有个 bug,在内层循环改变了外层循环变量导致的,简化一下如下代码。
for(int i = 0; i < k1; i++)
{
// do something...
for(i = 0; i < k2; i++)
{
//do other thing
}
// 在这使用 i 的值,原意是想用从 i = 0 ~ k1 的值,但实际上只会用到 i = k
}
所以即使要使用 i 之类的做循环,也在 for 内重定义一个,当然最好不是同名的变量。
上述代码在内层 for 循环内加个 int 即可解决。但为了避免歧义,还是换个名称更好。