for(i=0; 0; i)
{
//statement
}
为什么语句只执行一次?要么它不执行语句,要么语句应该进入无限循环。但该声明只执行一次。你能帮我吗?
答案 0 :(得分: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;
}
当跑步时没有输出。
另一种可能性是您的源代码现在与二进制文件不同步,这种情况偶尔会出现在手动编译C系统中。尝试删除.o
目标文件,生成的二进制文件,并从头开始重新编译。如果执行消失,也许您需要更仔细地查看如何实现构建。
答案 1 :(得分:5)
确保在for循环之后没有分号,否则编译器将使用分号作为循环的结尾,并且以下大括号中的任何内容都将执行一次。
for(i=0; 0; i); // end of loop
{
// do something once
}
你的例子中没有分号,但我看到人们经常在编程课程中这样做,而且它运行一次的事实就是这个错误的症状。只是一个建议。
答案 2 :(得分:1)
这是关于for循环的C99标准的引用:
6.8.5.3 The for statement 1 The statement
for(clause-1; expression-2; expression-3)
语句的行为如下:表达式表达式-2是 控制在每次执行之前计算的表达式 循环体。表达式-3被评估为空白 每次执行循环体后的表达式。如果第1条是a 声明,它声明的任何变量的范围是余数 声明和整个循环,包括其他两个 表达式;它是在第一个之前按执行顺序到达的 评估控制表达。如果第1条是一个 表达式,它在第一个之前被计算为void表达式 控制表达式的评估.134)
由于条件是假的,它甚至不应该执行一次。所以它显然是你使用的编译器中的一个错误。
答案 3 :(得分:0)
尝试
for (i = 0; i < 10; i++)
然后在谷歌上查找for循环。 for循环有三个部分
初始化;循环结束条件;增量。强>
为什么你的代码说,可能不是你的意思。
答案 4 :(得分:0)
这个循环甚至不会执行一次,因为终止条件是0,即假
for(i=0; 0; i)
{
printf("%d",&i)
}
不打印任何东西。