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