c - 可以在循环的括号内定义循环变量吗?

标签 c loops variables declare

我是 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/

相关文章:

c - 如何简化这段代码并使其成为函数?

c - 使用 C 语言编程的 Makefile

c - 在循环中 fork

c - 函数更改全局变量的值是否会影响加法顺序?

mysql - propercase mysql udf

c - 登录 C 的问题

java - 如何在 Java/Android 中的另一个线程启动之前等待一个线程完成?

javascript - 我如何使用 jQuery 永远循环 Bootstrap 工具提示?

variables - 如何在 sas 中为唯一变量创建索引?

variables - 将 CMD 结果传递给批处理文件中的变量