代码不';在while循环中使用continue后无法执行
我使用编译器编写了以下代码,该编译器被配置为适合使用eclipse的c89标准代码不';在while循环中使用continue后无法执行,c,loops,while-loop,continue,c89,C,Loops,While Loop,Continue,C89,我使用编译器编写了以下代码,该编译器被配置为适合使用eclipse的c89标准 #include <stdio.h> int main(void) { int i=0; printf("initial value for variable i is: %d\n",i); while (i<3) { if (i==1) {continue;} printf("%d\n",i); i++; }
#include <stdio.h>
int main(void) {
int i=0;
printf("initial value for variable i is: %d\n",i);
while (i<3)
{
if (i==1) {continue;}
printf("%d\n",i);
i++;
}
return 0;
}
#包括
内部主(空){
int i=0;
printf(“变量i的初始值为:%d\n”,i);
虽然(i当i
为1
时,它的值没有改变,因此在下一次迭代和下一次迭代中它仍然是1
,并且…从1
改变需要很长时间
for
循环的一个优点是它将循环控件捆绑在一行中。您不会看到for(i=0;i<3;i++)
作为循环的问题;continue
将跳转到循环控件中的i++
你说你正在使用Eclipse作为你的IDE。这可能就是为什么没有输出出现的原因。它的“终端”在程序中显示为非终端,因此I/O是完全缓冲的(而不是像终端输出通常那样的行缓冲)。这反过来意味着在缓冲区填满之前没有输出出现,你调用fflush(stdout)
,或者程序停止。这是Eclipse的已知问题。您可以调用:add a linesetvbuf(stdout,NULL,_IOLBUF,BUFSIZ)
在开始时确保行缓冲有效。当i
为1
时,它的值没有改变,因此在下一次迭代和下一次迭代中它仍然是1
,并且…从1
更改需要很长时间。
循环的的一个优点是它捆绑了控件-您可以查看(i=0;i<3;i++)的问题
作为循环;继续
将跳转到循环控件中的i++
。@JonathanLeffler是的,您可以将其作为答案发布以接受吗it@JonathanLeffler只是在使用continue inside循环时发生了一些奇怪的事情,代码是否在不检查条件的情况下继续运行在每次迭代中,i
中的值保持在1
,因为continue
跳过了i++;
行。因此条件永远不会改变;程序不会停止。这可能就是为什么没有输出出现的原因-您说您使用Eclipse作为IDE,它是“终端”在程序中显示为非终端,因此I/O被完全缓冲,并且在缓冲区填满、调用fflush(stdout)
或程序停止之前不会显示输出。