c语言中for循环的一个实例
我遇到了以下问题: 以下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(;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
处于该状态。