while语句
当条件成立时,重复执行某个语句或语句块,否则结束while语句。
while语句的语法格式为:
while(条件)
循环体
说明:
- 被重复执行的语句或语句块被称为循环体。
- 条件决定着是否执行循环体,因此也称为循环条件,其对应的表达式的值必须是boolean类型。
- 因先判断条件,在决定是否执行循环体,故while语句的循环体可能一次都不执行。
- 进入循环前,通常要为相应的变量赋以合适的初值,这成为循环条件的初始化。
- 通常不应在右圆括号后加分号,若加了,并不会出现语法错误,但此时循环体是一条空语句,而原本想作为循环体的语句或语句块则不受while控制,这很可能导致while语句陷入无限循环而无法结束。
- 为防止陷入死循环,循环体中应包含使循环体条件趋于不成立的语句。
do-while语句
当条件成立时,重复执行循环体,否则结束do-while语句。
do-while语句的语法格式为:
do
循环体
while(条件);
说明:
- 与while语句不同的是,do-while语句先执行循环体再判断循环条件,因此,do-while语句的循环至少要执行一次。
- 若循环体含有多条语句,则必须置于一对花括号中,否则视为语法错误。
- 右圆括号后的分号不能省略,以构成do-while语句。
for语句
for语句的语法格式:
for([表达式1];[表达式2];[表达式3])
循环体
说明:
-
表达式1执行且执行一次,通常用于循环条件的初始化,如i=1。
-
循环体是否继续执行取决于表达式2是否成立,因此for语句的循环体可能一次都不执行。与while和do-while语句的循环条件一样,表达式2的值必须是boolean型,如 i<10。
-
表达式3在每次执行完循环体之后执行,通常用于修改循环条件,如i++。
-
表达式1和表达式2分别指定了循环条件的起始和结束边界,因此,for语句较适合与循环次数能预先确定的场合。
-
可以在表达式1中声明变量,该变量只在for语句内有效,如:
for(int i=1;i<10;i++){
//此处可以访问i
} -
表达式2和表达式3中可以用逗号分隔多个表达式,以方便初始化和修改多个用以控制循环的变量,如:
for(i=1;j=10;i<10&&j>1;i++,j–) -
与while语句类型,通常不应在右圆括号后加分号,否则可能导致无限循环。
- 省略表达式1
表达式1只在进入for语句时执行一次,因此可以作为语句移到for语句之前,如:
表达式1;
for(;表达式2;表达式3) //省略了表达式1
循环体
- 省略表达式2
表达式2决定了是否继续执行循环体,因此可以移到循环体内部判断,如:
for(;;表达式3) { //省略了表达式1和表达式2
if(表达式2)
原来的循环体
else
break;
}
新的循环体增加了一个if-else语句,并将表达式2作为条件。若成立,则执行原来的循环体,否则,执行break语句。
- 省略表达式3
每次执行完循环体之后要执行表达式3,因此可以作为语句移到原来的循环体之后,并作为新循环体的一部分,如:
表达式1;
for(;😉{
if(表达式2){
原来的循环体
表达式3;
}
else
break;
}