我对 C 很陌生,但在 C# 方面有很多经验。
我的大学老师告诉我,在“纯”C 中,初始化循环变量是错误的
在循环括号内。
他说是因为VS编译器才运行的。
由于某些原因,演示文稿中的所有材料还显示了循环,其循环变量在括号之外声明。
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
在后来的标准中它被支持。两种代码风格的唯一区别是scope如果在循环头中声明,则该变量的范围仅限于循环。
因此,通过不在循环头中初始化,您可以使代码更加可移植或独立于标准/编译器。但我认识的大多数人肯定都使用这两种风格。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)