主要先判断还是先循环的区别。
while:先判断循环条件再执行循环。
do-while:先循环再判断循环条件。
也就是说while可能一次循环都不运行就退出了,do-while至少会执行一次循环。
例如:
while(false) do_something(); //这里先判断出循环条件为false,所以直接退出循环
do{do_something();}while(false); //这里虽然循环条件是false,但是由于do-while是先执行循环的,所以do_something会执行一次才退出。
用while语句实现循环:
while语句用来实现“当型”循环结构。其一般形式如下:
while(表达式)
语句;
执行顺序:先判断表达式,后执行语句。也就是说当while后面的表达式为真(非零)时,就执行语句。执行完后再次返回while表达式,如果还为真(非零)就再次执行语句,然后再次返回while表达试……直到while后面的表达式为假(为零)时终止执行。看不懂没关系,我们再来看一道例题:
#include
int main() //主函数
{
int i,sum=0; //定义整形i和sum的值,并把0的值赋给sum
i=1; //把1的值赋给i
while(i<=100) //当i的值<=100时执行下面循环体语句。
{
sum=sum+i; //sum=0+1
i++; //i++后此时的i不再是1了,i变成了2
} //然后返回while表达式,发现i的值仍然<=100所以继续往下做语句,直到i<=100为止
printf("%d\n",sum);
}
用do...while语句实现循环:
do...while语句的特点是先执行循环体,热后判断循环条件是否成立。其一般形式为:
do
循环体语句;
while(表达式)
执行顺序:先执行一次指定的循环体语句,然后判别表达式。当表达式的值为真(非零)时,返回重新执行循环体语句,如此反复,直到表达式的值为假(为零)时为止,此时循环结束。下面来看一道例题:
#include
int main()
{
int i,sum=0;
i=1;
do //先做这个语句
{
sum=sum+i;
i++;
}
while(i<=100) //再判断while后面的表达式成不成立
printf("%d\n",sum); //如果成立返回do,继续做语句,不成立则循环结束。
}
这么一总结我们可以知道:
while语句是先判断表达式成不成立。如果成立就做表达式;如果不成立则循环结束。 do...while语句不管条件成不成立,先做一段语句。做完后再去判断表达式成不成立。如果成立返回do后的语句继续做;如果不成立则循环结束。
那有的小朋友就会问了,这一个先判断和一个后判断有什么不一样吗,不都是要判断吗?小编在这里告诉你:while语句后的表达式如果在一开始就为假,就直接跳出循环了,而do...while语句先做语句后再跳出循环 。如果小朋友们还有什么疑惑可以在下方留言提问哦~
主要区别就是,如果条件不满足,while的话就一次都不运行,而do-while的话最起码运行一次。
while是“当什么的时候”的意思,就是这个语句是先要满足什么条件才执行,而后面这个语句是先就执行“do”后面的语句,执行完了再看时候满足条件,满足就继续执行,否则就停止
while循环是先判断,再决定是否执行循环体;
do while 是先执行一遍循环体,再去判断是否进行下次循环。
假设二者的判断条件都是第一次就不满足,那么While语句就根本不会执行循环体中的语句,而do while则会执行一次。
说白了,就是一个先判断再干活(先奏后斩),一个先干活再判断(先斩后奏)。