C语言中程序如:for( ; ;);为什么是死循环?

供稿:hz-xin.com     日期:2024-05-04
c语言 为什么for(;;)是死循环?

for(;;) {循环体;};
按语法, for 循环 (初态;终态;步长) 这三部分,现在 是 (空语句;空语句;空语句)。
是合法的语句。由于没有给 终态 (即允许继续循环和终止循环的条件), 循环语句于是可以 永远继续下去。俗称 无限循环 或 死循环。
但通常 循环体内 会有 语句控制 决定 是否中止。例如
for(;;) {... if (n>10) break; ...};
for(;;) {... if (n>10) goto Lab1; ...};
当然,必要时,也可以 按组合键 Ctrl+C, Ctrl+Z 之类的 中断 程序运行。

C语言中for循环包含三个部分:初始化、条件、递增
for (INITIALIZATION; CONDITION; AFTERTHOUGHT)
初始化是宣告(或者赋值)任何需要的变数的动作。如果你要使用多个变数,则变数的种类要一致。条件的部分则是检查是否离开这个循环,也就是让程式码往下执行。如果条件判断为假,则离开循环。递增在每跑一次循环都会重复执行一次。
for(;;),这个语句中缺少循环终止的条件,自然就是死循环了

for( ; ;);是一个典型的简介的死循环。

 

解释如下:

  1. 所谓循环就是让计算机重复执行一段代码;

  2. 循环的核心有两个部分:循环控制、循环体;

  3. 循环控制部分的循环结束条件如果永远成立,将会导致一直循环,俗称”死循环“;

  4. 上面的程序:最后的分号,表示循环体为空,是空循环;括号中的两个分号之间是放循环结束条件的,这里也是空,等价于循环条件永远成立。

     

for( ; ;);的循环条件永远成立,所以导致死循环。



您好,for(;;);这个循环相当于while(1);这个语句就是无限循环;
在for语句当中,第一个是初始化数据,第二个用于条件判断,第三个用于循环操作。
当第二缺省的时候,系统会直接判定为1,相当于不初始化数据,不进行循环操作,条件判断始终为真,始终进行空操作,不断循环,直至死机

死循环就是不停的执行一段代码,而没有退出的条件~~~~~比如你想要计算从1开始计算以后每个数的和,如果你设置成for(i=1;i<=100;i++){}则程序会在运行100次以后退出for循环,而如果设置成for(i=1;;i++){}就可以说是进入了一个死循环,当然这么写是不合法的~~~~

;;中间是结束条件,什么都不写就是一直循环,当然会死。
如果确实要这么使用,在for循环中使用break(结束循环)或者return(结束当前函数),也可以让他不死.

for(int i=0;i<20;i++)
=>确定i=0,执行循环语句,然后i=i+1,判断i是否小于20,如果为真,则执行循环语句,i=i+1,~~~~~~~知道i等于20时,跳出循环
=>for(语句1;语句2;语句3)

语句1:确定循环变量
语句2:当语句2为假时,跳出循环
语句3:当一次循环将要结束时,最后执行的语句

for(;;)语句2为空,则默认为恒真,无限循环。