5.15:说明下列循环的含义并改正其中的错误。

(a)for (int ix=0;ix != sz; ix++)  { /*......*/ }

  if(ix !=sz)

    //....

(b) int ix;

  for(ix != sz; ++ix)  {/*.......*/ }

(c) for(int ix=0; ix != sz;++ix, ++sz}  {/*......*/}

Ans:a)声明一个int类型的变量ix,并初始化为0,当ix!=sz时,执行循环体中的内容,然后ix++,直到ix==sz时跳出循环,最后判断ix!=sz是否为真,若真,执行if后面的语句。但是ix是for语句头中定义的变量,只在for语句及其循环体中有效。

   修改之后:

        int ix;

        for ( ix=0;ix != sz; ix++)  { /*......*/ }

        if(ix !=sz)

          //....

   b)声明一个int类型的变量ix,当ix!=sz时,执行循环体中的内容,然后ix++,直到ix==sz时跳出循环。但是ix没有进行初始化,并且for语句中的init-statement可以省略,但要保留分号。

    修改之后:

         int ix=0;

          for( ; ix != sz; ++ix)  {/*.......*/ }

    c)这是一个死循环,ix与sz是同步增长的,所以不会达到跳出循环的条件ix==sz。

    修改之后:

        for(int ix=0; ix != sz;++ix}  {/*......*/}

  

 posted on 2018-08-12 11:39  linlh  阅读(92)  评论(0编辑  收藏  举报