for(i = 0; 0; i)在c中执行恰好一次为什么?

Kap*_*arg 0 c loops for-loop

for(i=0; 0; i)
{
    //statement
}
Run Code Online (Sandbox Code Playgroud)

为什么语句只执行一次?要么它不执行语句,要么语句应该进入无限循环.但该声明只执行一次.你能帮我么.

Edw*_*uck 5

实际上,该行不会执行该语句.我会再次查看你的程序,看看是否有其他输出/语句被错误识别为块中语句的输出

#include <stdio.h>

int main(int argc, char** argv)
{
  int i;
  for (i = 0; 0; i) {
    printf("i is %d\n", i);
  }
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

当跑不产生输出.

另一种可能性是您的源代码现在与二进制文件不同步,这种情况偶尔会出现在手动编译系统中.尝试删除.o目标文件,生成的二进制文件,并从头开始重新编译.如果执行消失,也许您需要更仔细地查看如何实现构建.


Dan*_*Dan 5

确保在for循环之后没有分号,否则编译器将使用分号作为循环的结尾,并且以下大括号中的任何内容都将执行一次.

for(i=0; 0; i); // end of loop

{
   // do something once
}
Run Code Online (Sandbox Code Playgroud)

你的例子中没有分号,但我看到人们经常在编程课程中这样做,而且它运行一次的事实就是这个错误的症状.只是一个建议.