注意:本文讨论的while后接分号“;”与否的区别,是针对while循环,因为do……while循环中while 后面的分号必须要有且千万不能省略,否则编译会报错。
while 循环的格式是:
while (循环条件)
{
循环体;
}
1、while(循环条件)后不带分号“;”时:
当循环条件为真(非0)时, 不断执行循环体语句。直到循环条件为假(0)时,就跳出循环,执行while循环后面的语句。例:利用while循环计算 1+2+3+4+…+9 之和
#include <stdio.h>
int main(void)
{
int i = 10;
int sum = 0;
while (i--) // 没有分号“;”
{
sum = sum + i;
}
printf("sum = %d\n", sum);
return 0;
}
执行结果:sum = 45
符合预期。
2、while(循环条件)后带有分号“;”时:
while(循环条件)与其后面的分号“;”成为了一个整体。
当循环条件为真(非0)时, 不会执行循环体语句。直到循环条件为假(0)时,才会执行循环体语句(执行一遍),然后继续执行后面的语句。例:利用while循环计算 1+2+3+4+…+9 之和
#include <stdio.h>
int main(void)
{
int i = 10;
int sum = 0;
while (i--); // 有分号“;”
{
sum = sum + i;
}
printf("sum = %d\n", sum);
return 0;
}
执行结果:sum = -1
不符合预期。
3、总结
虽然while循环中while后面加了分号“;”不会出现编译出错,但是它已经不是while循环了,理解也变了,执行结果因此就不同了。
所以,while循环中while后面没有分号“;”(do……while循环中while后面才有分号“;”)。