为什么这些继续语句不能在我的循环中工作?

时间:2015-10-23 14:27:19

标签: c while-loop do-while continue

我试图将以下for循环转换为while和do-while循环,但由于某种原因,代码在进入实际循环之前就会中断。

这是我尝试复制的内容:

#include <stdio.h>

int main(void)
{ int y;

  for (y=1;y<10; y++)
  { if (y == 5)
      continue;
    printf("%2d", y);
  }

  printf("\ny=%2d\n",y);

  return 0;
}

以下是我尝试制作等效的while和do-while循环:

#include <stdio.h>

int main(void)
{
  int y;

  y = 1;
  while(y < 10)  // here's my while loop
    {
      if(y == 5)
        continue;
      printf("%2d", y);
      y++;
    }

  printf("\ny=%2d\n",y);

/********************
... and my do-while
********************/
  y = 1;
  do
    {
      if (y == 5)
        continue;
      printf("%2d", y);
      y++;
    } while(y < 10);

  printf("\ny=%2d\n",y);

  return 0;
}

我哪里出错了?

2 个答案:

答案 0 :(得分:5)

for循环中,continue跳转到for语句的第三个表达式,这会使计数器递增。

while循环中,continue立即跳转到下一次迭代,跳过增量。

答案 1 :(得分:3)

如果您的代码中满足条件,则不会增加变量,因此您会陷入无限循环。尝试

#include <stdio.h>

int main(void)
{
  int y;

  y = 0;
  while(++y < 10)  // here's my while loop
    {
      if(y == 5)
        continue;
      printf("%2d", y);
    }

  printf("\ny=%2d\n",y);

等。