C++中,do while, for loop和while loop之间有什么不同

如题,求高人解答一下,最好能弄点例子。。本人入门不久,例子简单易懂最好。
谢谢~!

都是为了实现循环流程。
出于对C++设计方向思考,为了实现循环,我们第一个想到的一定是先有个关键词表示要循环,然后有个判断条件,判断什么时候进行循环什么时候停止。因而设计师给出了while(条件)也很好用。
但在程序开发过程,我们会发现,经常有需要先无条件地执行一次与循环体相同的内容,再判断条件是否满足,如果满足继续执行循环体,这种情况,只用while来写这样的流程是很麻烦的,需要在进入while循环体之前,单独写一次与循环体相同的代码,为了简洁,出现了do...while(条件)这样的体制。并且它与while(条件)比较,条件语句所出现的相应位置也是符合我们的思维习惯(dowhile的条件在循环体之后,也就是先无条件运行一次循环体,然后判断条件,while是先判断条件,再确定是否执行循环体)一目了然。
并且在开发过程中,发现很多循环流程都需要事先进行变量初始化,事先执行部分代码,判断条件,改变关键变量等操作,这些东西需要相应地分别写在while外与while的循环体内,与判断条件中。但有更直观地写法,就是将它们用另外格式替代,以实现更直观代码量可能更少,就多了for的设计。for (表达式1,条件,表达式2){循环体}。执行并只执行一次表达式1,然后“条件,循环体,表达式,条件,循环体,表达式……”循环下去,直到条件不满足为止(当第一次判断条件时就不满足,那就会直接跳出for整个语句而不执行循环体),另外在表达式1中如果声明了变量,那么这个变量的有效范围是:不同的编译器给它的范围不同,有的编译器设定为for体内外都可用,有的编译器设定为只能在for体内可用。
例如 第一种编译器 for(int i = 0; ; ){} ++i; 编译通过,i在体外可用。
另一种编译器 for(int i = 0; ; ){} ++i; 编译不通过,i在体外不可用,也就是认为代码书写有误。
do while,while, for之间可以互通,也就是说任意一种都可以代替其他两种达到同样的目的。只是针对不同情况,这三种方式表现出的节俭方便度与逻辑复杂度不同。
例1:
int i = 0;
do { ++i; } while(i < 2);
等效于
int i = 0;
++i
while(i < 2){ ++i; }
等效于
int i = 0;
++i;
for (;i < 2; ++i);
上面的3个例子很片面很简单,看不出哪种形式更有优势。其实这三种形式各有优点,在后期开发中你自己会很快体会到。需要do while时并且循环体很大时,那么一定选do while最合适,没有二选。
如果事先需要判断条件的话,一定是while与for最合适(具体用哪个更好要看情况,有时用哪个都行,有时各显优点),而不会去用do while,因为如果用do while 会画蛇添足,需要多写一些无畏的代码,并且逻辑复杂代码冗余等各种尴尬出现给自己找麻烦。
另外你提到的loop我不太了解,以前的C++语句中不包含这个关键词,不知道C++11中是否有增添,另外C++11中增加的循环的另外形式,不过我就帮不上忙了,我对C++11很是不熟。
不知道你说loop是不是看到有人写 goto loop; 这类的语句?如果是的话,那就是goto跳转了与loop无关,但一定不要用它来进行循环,甚至也尽量避免使用goto进行跳转。goto容易造成逻辑错误,并且排错不那么方便,后期维护时也容易带来更多麻烦。这里goto就不做过多介绍了,反正我是不用它。goto 比while,do while出现的要早,也是因为他不好用,随意性太强,才出现了更合适的while,do while,for 等形式。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-07
do…while循环语句总能保证循环体被执行一次,其形式如下:
do
{
Statement;
}while(expression);
注意,在do…while循环结构中,while语句的括号内指定循环的条件,该句结尾处应以分号“;”结束。
--------------------------------------------------------------------
while循环结构具有下列形式:
while (expression)
statement;
只要expression表达式的值为“真”,就重复执行statement语句。
--------------------------------------------------------------------
For语句通常用于处理具有固定长度的数据结构,例如数组等。下面是for循环语句的语法结构:
for (expression1; expression2; expression3)
{
statement;
}
其用法和执行过程同C语言基本相同。本回答被提问者和网友采纳
第2个回答  2010-06-05
你弄错了。C++里只有:
do
{
}while(条件语句)

while(条件语句)
{
}

for(初始化语句;条件语句;循环后处理语句)
{
}
这三种循环。没有loop
第3个回答  2010-06-05
do while是先执行再判断。至少能执行一遍

for loop和while loop 都是先判断后执行,可能一遍都不执行。
而for loop和while loop的区别是,for loop的控制变量的初始化,条件判断,和变量递增基本写在for后面的括号里,而while loop都写在循环程序段里。
第4个回答  2010-06-05
do
{
i++;
}while(i > 0);
先运行一次i++ ,再判断i是否大于0,继续执行循环

while(i>0)
{
i++;
}
先判断i是否大于0,继续执行判断

for(i = 0;i < N;i++)
{
doSometing();
}
先初始化 i为0 ,再判断 i是否小于 N ,dosomething() ,最后i++
判断 i是佛小于N ,dosomething() ,i++

如此往复 ,直到i >= N 跳出循环
相似回答