求助,循环内部定义的变量会影响到外部,这是怎么回事
while(true)
{
string aaa;
}
string aaa;
这么干是不允许的,vs报告
不能在此范围内声明名为“aaa”的局部变量,因为这样会使“aaa”具有不同的含义,而它已在“子级”范围中表示其他内容了.
vs2012,这是为什么,循环内部定义的变量作用域不是只在循环内部的吗,为什么会影响到外部的定义?
------解决方案--------------------
编译器直截了当地告诉你了啊!代码块内外不能重复声明相同名字的变量,因为这会让看似融合在一起的代码块中的变量具有诡异的、不为人注意的另一个含义。
------解决方案--------------------写代码本来就是严谨的事,对于这些错误只要避免就行,局部变量和全局变量在开发工具中是有严格把控的,这些本来不是语言的问题,从而给加上也另外一个锁,是的语言本身有了某些规矩,而我们要想用这些开发工具就必须遵守工具的规律,与语言无关!