为什么这是一个无限循环?
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循环更合适。
为什么循环继续到无穷大,我通过 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循环更合适。