(因为是刚接触c语言的小白,所以使用最简单的术语进行解读。-----以下是本人在学习中收集并理解整理的,如有错误还请大佬指出)
while/do—while
先来说说while吧
while
虽然可能大家都知道了,但是都是小白,我还是解释一下吧。while,当满足循环的前提条件时,会进行一次循环语句。随后再判断一次前提条件,如果成立,继续循环,直到条件不成立,结束while循环。
图像大概是这样的
while使用格式是这样的:
while(循环的前提条件)
{
循环语句
}
while()后面的 {} 如果循环语句只有一句的话,可以不加。系统会默认while后面第一句话为while的循环语句。如果有两条语句而不打 {} 的话,只有第一条语句会进入循环。
(要注意while语句后面没有加 ;哦。)
但如果你写成了这样
while(循环的前提条件);
{
循环语句 //这里的循环语句失去了他该有的工作
}
那么恭喜你,你得到了一个没有循环语句的循环。
为什么?
以下为个人见解:你可以认为 ; 指的是一个空的语句,根据上一条所说,这个分号没有被 {} 括住,在while身后没有紧跟 {} 的情况下while会默认自己身后的第一句话为循环体,但是他身后只有一个 ;也就什么都不会发生了。随后如果while循环结束,系统会按正常顺序读到 “循环语句” ,但是只执行一遍。
在while()后面直接添加;这种情况很可能导致程序出错,比如下面的程序会发生什么?思考一下?
int a=3;
while(a>2);
a--; //a--等于a=a-1(和--a有差别,但这里不做解释)
————————
没错,它会无限循环,因为判断a大于2是永远成立的,后面的 ;不会对a的值进行修改(当然它啥也不会做)。你会发现你的程序在这一步卡住了,并且永远留在了这里。
那么有人会想,既然它会无限循环,那么你之前说while();循环结束不就错了吗?
这里就要联系到while判定的性质了
while的判定
while的条件判断,只会判断是否为0或1!
在while的眼里,他只认识两个数,一个是0,一个是1。当条件正确时,while会认为它是1,比如while(1),while(3)(只有一个数字当然是正确的),while(2>1),甚至是while(!0)。在while眼中,他看到的就是while(1)。
但是如果是错误的比如while(2<1)或者直接为while(0),在while眼中都是while(0),然后会结束while的循环
所以说
int a=3;
while(a--); //a--等于a=a-1在这同样不做深入解释
它会在a减为0时退出循环。
现在,我们的while结束了。就来看看do—while吧
do—while
在学过while之后,do—while就很简单了。和while的区别是,do—while会先进行一次循环,再判断条件是否成立。
图像是这样的:
除了do—while会先进行一次循环语句再判断条件是否成立之外,其他方面与while相同。
do—while的使用格式是这样的:
do
{
循环语句
}
while(条件);
和while一样,在do后面只有一条语句时可以不用加 {}
注意:在这里while加了分号 !
do—while后面的分号是必要的(如果你想过编译的话),他意味着do—while函数的结束。
以下为个人见解(我猜的):如果不用加分号来对while进行处理,在进行阅读时可能会因为没有看见do而错误的以为下方的while为单独的一个while语句。而进行错误解读。(毕竟一个身后跟着;的while挺引人注目的)
最后,让我们一起愉快的拥抱c语言大家庭吧
//(因为本人为c语言新手,如有错误,还请各位手下留情 )