2010-04-30 88 views

回答

10

第一個聲明循環外的作用域中的變量;循環結束後,變量仍然存在並且可用。第二個聲明變量,使它屬於循環的範圍;在循環之後,變量不再存在,防止該變量被無意地/錯誤地使用。

在C99,C++,Java和其他類似的語言,你會發現大多是第二個語法,因爲它是更安全 - 循環索引所屬的環和不被修改/別處共享。但是,您會在較舊的C代碼中看到很多前者,因爲ANSI C不允許在循環中聲明循環變量。

舉個例子:

int i; 
// ... lots of stuff 
for (i = 0; i < 5; i++){ 
    printf("%d\n",i); // can access i; prints value of i 
} 
printf("%d\n",i); // can access i; prints 5 

相反:

for (int i = 0; i < 5; i++){ 
    std::cout << i << std::endl; // can access i; prints value of i 
} 
std::cout << i << std::endl; // compiler error... i not in this scope 
+0

答案是非常豐富的。 – Nobody 2010-04-30 10:06:31

2

這將取決於語言,你還沒有:-)

在C指定(和該變量的一些其他),範圍(有效地在這種情況下的持續時間)是不同的。首先,變量存在於循環之後,因爲它在外部聲明。

在後者中,它當循環結束,因爲它的存在是「內部」循環體消失。

+0

感謝您的回答paxdiablo。 – Nobody 2010-04-30 10:07:06