c语言中for循环的一个实例

c语言中for循环的一个实例,c,for-loop,C,For Loop,我遇到了以下问题: 以下for循环将运行多少次- for(;0;) printf("hello"); 我执行了,它运行了1次。我无法理解如何执行?即使执行一次也不会执行。我猜你的编译器不好吧 嗯。我认为您使用的是Turbo C;-) 编辑: 从C99标准: 6.8.5.3报表1报表 for(第1条;表达式-2;表达式-3) 语句的行为如下:表达式-2是 在每次执行之前计算的控制表达式 环体。表达式-3的计算结果为空 每次执行循环体后的表达式。如果第1条是 声明时,它声明的任何变量的范围都是余

我遇到了以下问题:

以下for循环将运行多少次-

for(;0;)
 printf("hello");

我执行了,它运行了1次。我无法理解如何执行?

即使执行一次也不会执行。我猜你的编译器不好吧

嗯。我认为您使用的是Turbo C;-)

编辑:

从C99标准:

6.8.5.3报表1报表

for(第1条;表达式-2;表达式-3)

语句的行为如下:表达式-2是 在每次执行之前计算的控制表达式 环体。表达式-3的计算结果为空 每次执行循环体后的表达式。如果第1条是 声明时,它声明的任何变量的范围都是余数 声明和整个循环,包括其他两个 表达;它是按照第一次执行之前的执行顺序到达的 控制表达的评估。如果第1条是 表达式,则在第一个 控制表达的评估(134)


它清楚地表明,在执行循环之前先评估条件。任何符合标准的编译器都不应执行(;0;){}的循环
,甚至一次。

您在此处复制的代码不是.c文件中的代码,或者您的编译器有缺陷


也许您还有一个分号?:
表示(;0;);printf(“!”)将打印一次。

上面写的代码永远不会进入for循环

检查ideone上的代码

我的意思是这不是你的源代码,你可能键入了一个
,在
之后编码>而不注意它,如下所示:

for(;0;);
printf("hello");

在这种情况下,您的程序将打印“hello”。

因为表达式为0,所以它被视为false。因此,在这种情况下,循环运行0次

for循环定义为:

for(startExpression; testExpression; countExpression)
{
    block of code;
}
  • startExpression在代码之前进行评估
  • testExpression在代码之前进行评估
  • countExpression在代码之后进行求值
解码:

for(;0;)
意味着

  • 无星压
  • testExpression计算为false,因此循环退出

编辑以显示正确的循环解码。

我想说它没有运行,因为这里的条件是
0
,在运行内部代码之前检查。你确定做得正确吗?请指定你使用的编译器和参数。在我使用ms编译器的机器上,这个循环没有运行。我想输出是:“hello”,我猜您有一个额外的分号:
表示(;0;);printf(“你好”)您使用的是什么编译器nishantvTurbo C确实为上述代码打印了一次“hello”!这可能是OP所问的。所以正确的答案是“不要使用turboc”:@Neil为上述代码打印一次“hello”肯定是错误的,turboc就是这样做的。不要因为你不知道就否决我。@obounaim是的,我在turbo c&gcc上运行过。gcc工作正常(甚至一次都不打印“hello”。@nishantv您无法解释这样的错误。它根本不符合标准。Turbo C是一个古老的16位编译器,有很多bug,我认为没有人在开发中使用它。<代码>[阻止turbo C]的原因(http://stackoverflow.com/a/1962710/1275169)
。如果条件为false,则循环不会执行一次。您的解码“运行代码”不正确,因为
0
处于该状态。