請注意,本人用到是VS2010測試:
一:for循環外聲明變量,for循環內使用,for循環外再使用的情況
(1)c++里面的情況
int i = 0;
for (i; i <= 5; i++)
{
printf("循環中的i=%d\n", i);
}
printf("循環外的i=%d\n", i);//循環外結果i=6
system("pause");
return 0;
這里可以看到在循環體外輸出的時候i的值變了,也就說for循環體內改變了i的值。具體for循環體內的i和循環外的i是不是一個內存地址上的i,是在堆上還是棧上,我也不清楚,還請各位大神解答。
(2)c#里面的情況
#region 像這樣在for循環外聲明,for循環里面使用的話c++里面是不報錯的,但是c#報錯
int i = 0;
for (i; i <= 5; i++)
{
Console.Write("循環中的i={0}\n", i);
}
Console.Write("循環外的i={0}\n", i); ;//循環外結果i=6
#endregion
提示for后面括號里面的i錯誤,應該是因為i未聲明賦值的原因。
二:for循環內聲明變量,循環外使用的情況(此處c++和c#都報錯)
(1)c++里面的情況
//像這樣在for循環內聲明,for循環外使用的話c++和c#里面都報錯的,作用域問題
for(int i=0;i<=5;i++)
{
printf("循環中的i=%d\n",i);
}
printf("循環外的i=%d\n",i);//循環外結果i=6
system("pause");
return 0;
錯誤提示for循環體外的i未聲明,可能是作用域的問題。
(2)c#里面的情況
#region 像這樣在for循環內聲明,for循環外使用的話c++和c#里面都報錯的,作用域問題
for (int i=0; i <= 5; i++)
{
Console.Write("循環中的i={0}\n", i);
}
Console.Write("循環外的i={0}\n", i);//循環外結果i=6
Console.Read();
#endregion
錯誤提示for循環外的i不存在。可能是作用域的問題。