C++中变量的作用域一般是两个对应的花括号之间的区域。下面一段程序:
int main()
{
int sum=0;
for(int i=0; i<10; i++)
{
sum += i;
}
cout << sum << endl;
return 0;
}
变量sum的作用域是整个main函数,而变量i的作用域为for循环内。在编写代码的时候,有时可能会使用同名的变量,当然这样的编码风格会存在大量的BUG!例如:
int main()
{
int i=0;
for(int i=0; i<10; i++)
{
}
cout << i << endl;
return 0;
}
上面存在两个变量i,在for循环内,实际递增的是第二个i,所以最后输出i应该为0。实际编码要尽量避免变量重名。接下来一段程序是项目过程中遇到的BUG程序:
int k=0;
//将整数转化为字符串
for(int j=num, k=0; j>0&&k<10; j/=10, k++)
{
ch[k] = j%10 + '0';
}
ch[k] = '\0';
程序在for循环内不小心重新声明一个k,导致之前定义的k被屏蔽,结果可想而知。
上述错误,排查了很久,其根本原因是编码风格不良和对变量作用域的忽视。

1856

被折叠的 条评论
为什么被折叠?



