C编程从入门到实践
上QQ阅读APP看书,第一时间看更新

7.4.3 使用for循环语句的注意事项

在使用for循环语句时,应该注意如下9点。

(1)for循环中的“表达式1(循环变量赋初值)”“表达式2(循环条件)”和“表达式3(循环变量增量)”都是可选项,并可以省略,但是不能省略分号“;”。

(2)如果省略了“表达式1(循环变量赋初值)”,则表示循环控制变量不赋初值。

(3)如果省略了“表达式2(循环条件)”,则不进行其他操作时便形成了死循环。例如下面的代码。

    for(i=1; ; i++)sum=sum+i;

上述代码相当于

    i=1;
    while(1){
        sum=sum+i;
    i++;
    }

(4)如果省略了“表达式3(循环变量增量)”,则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。例如下面的代码。

    for(i=1; i<=10; ){
          sum=sum+i;
          i++;
    }

(5)可以同时省略“表达式1(循环变量赋初值)”和“表达式3(循环变量增量)”,即只给出循环条件,但是不能省略分号。

(6)3个表达式都可以省略,例如“for(;;)语句”,此时它是一个无限循环语句,除非用break来终止,否则将一直循环下去而成为死循环。

(7)表达式1可以是设置循环变量初值的赋值表达式,也可以是其他表达式。例如下面的代码。

    for(sum=0; i<=100; i++)sum=sum+i;

同样,表达式3也可以是和循环无关的任意表达式。

(8)表达式1和表达式3可以是一个简单表达式,也可以是逗号表达式。例如下面的两行代码。

    for(sum=0, i=1; i<=100; i++)sum=sum+i;
    for(i=0, j=100; i<=100; i++, j--)k=i+j;

(9)表达式2一般是关系表达式或逻辑表达式,也可是数值表达式或字符表达式,只要其值非零,它就执行循环。例如下面的代码。

    for(i=0; (c=getchar())! ='\n'; i+=c);