我正在尝试理解以下代码如何在没有任何无限循环的情况下运行。
int main()
{
int count = 1;
for (;count <= 5; count++)
{
int count = 1;
cout << count << "\n";
}
system("pause");
return 0;
}
答案 0 :(得分:5)
循环体中的内部int count = 1
声明一个值为1的新变量,该变量与循环count
不同。
答案 1 :(得分:3)
变量count
不相同,它们有不同的范围:
int count = 1; ///--------------- Scope 1
for (;count <= 5; count++)
{ ///---------------------------- Scope 2
int count = 1;
cout << count << "\n";
} ///---------------------------- End Scope 2
///------------------------------ End Scope 1
因此,int count = 1
中使用了范围2中的cout
,因为它被解析为最低级别的范围。但是一个for循环范围已经完成,这个计数被销毁并且使用了范围1中声明的计数。这就是你没有得到无限循环的原因。
答案 2 :(得分:1)
第二个计数与第一个计数不同。您使用新的内存地址声明一个新变量。假设第一个计数的内存地址是a。然后第二个计数的存储器地址是b。因此,存储器地址b的变量等于1,但它决不会影响地址a的计数。您可以通过编写cout&lt;&lt;来检查这一点。 &amp; count&lt;&lt; “\ n”在声明新计数之前和之后。这将为您提供他们的记忆地址。