我是 C 的新手,但在 C# 方面有很多经验。 我的大学导师告诉我,在“纯”C 中,初始化循环变量是错误的 在循环括号内。 他说它运行是因为VS编译器。 由于某些原因,演示文稿中的所有 Material 还显示了在括号外声明了循环变量的循环。
for (int i=0; i < 5; i++)
{
//He says that this is wrong, and you will lose points in tests for that
}
int i;
for (i=0; i < 5; i++)
{
//Says it should be done like that (i declared outside loop)
}
真的很重要吗?有些编译器无法识别它吗?我会在考试中失分吗?
最佳答案
肯定没有错,只是你的编译器用的是哪个C标准的问题。
如果您的编译器使用早于 C99 的标准,那么在循环头中初始化一个变量将通过这样的错误。
$ gcc loop.c
loop.c: In function ‘main’:
loop.c:5: error: ‘for’ loop initial declaration used outside C99 mode
在后来的标准中它被支持了。如果在循环 header 中声明,则两种代码样式的唯一区别是变量的范围仅限于循环。
因此,通过不在循环头中进行初始化,您可以使您的代码更具可移植性或独立于标准/编译器。但我认识的大多数人肯定会同时使用这两种风格。
关于c - 可以在循环的括号内定义循环变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61059550/