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} {/*......*/}