【问题标题】:Local counter variable in for loopfor循环中的局部计数器变量
【发布时间】:2016-01-21 18:17:22
【问题描述】:

这是否为所有 C 标准所接受?

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

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

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

【问题讨论】:

  • 没有。你需要写第二个。
  • 只有一个 C 标准,目前是 ISO 9899:2011。这很好地接受了这一点。第二个版本有不同的语义。

标签: c for-loop local-variables


【解决方案1】:

不,它仅从 C99 开始有效。如果您希望您的代码在旧标准下有效,请使用

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

而且,read this comment @JoachimPileborg 也很好地补充了这个答案。

【讨论】:

  • 可能值得注意的是,在 C99 之前,变量也需要首先在函数的声明块中声明。不能简单地在循环之前声明循环计数变量(除非循环是函数中的第一个非声明语句)。
  • 这有不同的语义,因为i 的范围现在是封闭块的范围,而不仅仅是for 循环。
  • 我有时会从一个循环中break 并在循环之后使用i 的值来查看它是否自然完成。但如果i 超出范围,这是不可能的。
猜你喜欢
  • 1970-01-01
  • 2014-08-06
  • 1970-01-01
  • 2011-12-20
  • 1970-01-01
  • 1970-01-01
  • 2012-07-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多