2016-01-21 31 views
0

所有C标准都可以接受吗?for循环中的本地计数器变量

for (int i=0; i<n; i++) { 
    // do stuff 
} 

或者我应该这样写,只是为了确保它在任何地方都可以工作?

int i; 
for (i=0; i<n; i++) { 
    // do stuff 
} 
+1

不需要。你需要写第二个。 –

+0

只有一个C标准,目前是ISO 9899:2011。这很好地接受了这一点。而第二个版本有不同的语义。 – Olaf

回答

2

不,从C99开始才有效。如果你想在旧标准使用

int i; 
for (i = 0 ; i < n ; i++) 

而且还通过read this comment @JoachimPileborg你的代码是有效的它补充好这个答案。

+1

可能值得注意的是,在C99之前,变量需要在函数的第一个声明块中声明。不能简单地在循环之前声明循环count变量(除非循环是函数中的第一个非声明语句)。 –

+1

这具有不同的语义,因为'i'的范围现在是封闭块的范围,而不仅仅是'for'循环。 – Olaf

+0

我有时会从循环中“断开”并在循环后使用“i”的值来查看它是否自然完成。但是如果'我'超出了范围,这是不可能的。 –