为什么这是一个无限循环?

Why this is an infinite loop?

为什么循环继续到无穷大,我通过 n<6 设置了限制,还有一件事,代码打印 111111...。我期望的输出是 12345.

#include <stdio.h>

//Compiler version gcc  6.3.0

int main()
{
  int n=1;
  do{
    while(n<6)
    printf("%d",n);
    n++;
  }
  while(n<6);

  return 0;
}

Why this is an infinite loop?

因为这个:

do{
    while(n<6)
    printf("%d",n);
    n++;
}
...

其实是这样的:

do{
    while(n<6) {
        printf("%d",n);
    }
    n++;
}
...

代码永远不会逃脱 do 下的“单语句 while 循环”。我建议删除它,这样你就只有一行 while(n<6),就在 return 之上,这将使你的程序按预期运行

因为在这个循环中只执行了一条语句

    while(n<6)
       printf("%d",n);

等同于:

while(n<6)
{
   printf("%d",n);  
}

n == 1满足循环条件condition

时你进入这个循环

正确的代码应该是:

#include

//Compiler version gcc  6.3.0

int main()
{
  int n=1;
  do{
    printf("%d",n);
    n++;
  }
  while(n<6);

  return 0;
}

此外,我发现没有理由使用 do-while 语句。 一个简单的时间就可以完成工作:

int n=1
while(num<6)
{
  printf("%d",n);
  num++;
}

此外,对于已知长度的输入,使用for循环更合适。