C语言无限循环
什么是无限循环?
无限循环是一种不会终止循环的循环结构,并且永远执行循环。也称为不确定循环或无限循环。
何时使用无限循环
无限循环对于那些接受用户输入并生成的应用程序很有用。输出持续不断,直到用户手动退出应用程序为止。在以下情况下,可以使用这种类型的循环:
所有操作系统都以无限循环运行,因为执行某些任务后该循环不存在。仅当用户手动关闭系统时,它才会出现无限循环。
当服务器响应所有客户端请求时,所有服务器都在无限循环中运行。仅当管理员手动关闭服务器时,它才会出现无限循环。
所有游戏也都无限循环运行。在用户退出游戏之前,游戏将接受用户的请求。
我们可以通过各种循环结构创建无限循环。以下是我们将定义无限循环的循环结构:
for循环
while循环
do-while循环
go-to语句
C宏
For循环
让我们看看无限的"for" 循环。以下是 infinite for循环的定义:
for(; ;)
{
// body of the for loop.
}
我们知道'for'循环的所有部分都是可选的,在上面的for循环中,我们没有提到任何条件。因此,此循环将执行无限次。
让我们通过一个示例来理解。
#include <stdio.h>
int main()
{
for(;;)
{
printf("Hello lidihuo");
}
return 0;
}
在上面的代码中,我们无限次运行'for'循环,因此" Hello lidihuo" 将无限显示。
输出
while循环
现在,我们将看到如何使用while循环创建无限循环。以下是无限while循环的定义:
while(1)
{
// body of the loop..
}
在上面的while循环中,我们在循环条件中放入" 1"。我们知道,任何非零整数都代表真实条件,而'0'代表错误条件。
让我们看一个简单的例子。
#include <stdio.h>
int main()
{
int i=0;
while(1)
{
i++;
printf("i is :%d",i);
}
return 0;
}
在上面的代码中,我们定义了while循环,由于它不包含任何条件,因此可以无限次运行。 'i'的值将无限次更新。
输出
do..while循环
do..while 循环也可以用来创建无限循环。以下是创建无限 do..while 循环的语法。
do
{
// body of the loop..
}while(1);
上面的do..while循环表示无限条件,因为我们在循环条件内提供了" 1"值。我们已经知道非零整数表示真实条件,因此此循环将运行无限次。
goto语句
我们还可以使用goto语句定义无限循环。
infinite_loop;
// body statements.
goto infinite_loop;
在上面的代码中,goto语句将控件转移到无限循环。
宏
我们还可以使用以下命令创建无限循环在宏常量的帮助下。让我们通过一个例子来理解。
#include <stdio.h>
#define infinite for(;;)
int main()
{
infinite
{
printf("hello");
}
return 0;
}
在上面的代码中,我们定义了一个名为" infinite"的宏,其值为" for(;;)"。每当程序中出现"无限"一词时,就会将其替换为" for(;;)"。
输出
到目前为止,我们已经看到了定义无限循环的各种方法。但是,我们需要一些方法来摆脱无限循环。为了走出无限循环,我们可以使用break语句。
让我们通过一个示例来理解。
#include <stdio.h>
int main()
{
char ch;
while(1)
{
ch=getchar();
if(ch=='n')
{
break;
}
printf("hello");
}
return 0;
}
在上面的代码中,我们定义了while循环,它将执行无数次,直到我们按下键" n"为止。我们在while循环中添加了'if'语句。 " if"语句包含break关键字,而break关键字将控制带出循环。
无意的无限循环
有时会出现以下情况: 由于代码中的错误,会发生意外的无限循环。如果我们是初学者,那么很难追踪他们。以下是一些跟踪无意无限循环的措施:
我们应该仔细检查分号。有时我们将分号放在错误的位置,这会导致无限循环。
#include <stdio.h>
int main()
{
int i=1;
while(i<=10);
{
printf("%d", i);
i++;
}
return 0;
}
在上面的代码中,我们将分号放在导致无限循环的while循环的条件之后。由于此分号,while循环的内部主体将无法执行。
我们应该仔细检查逻辑条件。有时由于错误,我们将赋值运算符(=)代替了关系运算符(= =)。
#include <stdio.h>
int main()
{
char ch='n';
while(ch='y')
{
printf("hello");
}
return 0;
}
在上面的代码中,我们使用赋值运算符(ch ='y')导致无限次执行循环。
我们使用了错误的循环条件,导致循环无限期执行。
#include <stdio.h>
int main()
{
for(int i=1;i>=1;i++)
{
printf("hello");
}
return 0;
}
上面的代码将无限次数执行" for循环"。当我们输入条件(i> = 1)时,该条件对于每个条件都将始终成立,这意味着" hello"将被无限打印。
在嵌套循环中使用 break 关键字时,请务必小心,因为它将终止最近的循环而不是整个循环的执行。
#include <stdio.h>
int main()
{
while(1)
{
for(int i=1;i<=10;i++)
{
if(i%2==0)
{
break;
}
}
}
return 0;
}
在上面的代码中,当我们在内部循环中使用break关键字时,while循环将无限次执行。这个break关键字会将控件带出内部循环,而不是外部循环。
在循环中使用浮点值时,我们应该非常小心,因为我们不能低估浮点错误。
#include <stdio.h>
int main()
{
float x = 3.0;
while (x != 4.0) {
printf("x = %f\n", x);
x += 0.1;
}
return 0;
}
在上面的代码中,循环将无限次运行,因为计算机将浮点值表示为实际值。计算机会将4.0的值表示为3.999999或4.000001,因此条件(x!= 4.0)永远不会为假。解决此问题的方法是将条件写为(k <= 4.0)。