while()和do..while();的小问题..

单独的while()括号后可以不加;
为什么do..while();括号后要加;

1:
#include"stdio.h"
main()
{
int i=1,sum=0;
while (i<=100) /* 此处while()括号后没有; */
{
sum+=i;
i++;
}
printf("sum=%d",sum);
getch();
}

2:
#include"stdio.h"
main()
{
int i=1,sum=0;
do
{
sum+=i;
i++;
}
while(i<=100); /* 此处while()为什么括号后要加; */
printf("sum=%d",sum);
getch();
}

第一种情况下while和()还有后面的{}是一个整体循环,你可以把它们整体看成一个语句,而因为"}"本身就是一种结束符号,所以后面不用再加分号来证明语句结束.
第二种情况下do和{}还有后面的while()构成了另外一种循环体,他们是一个整体,他们后面必须有证明结束的标志,而")"明显不能能成为这样一种标志,所以后面加";".
所以,两种结构
1. while(判断语句)
{语句;}
2.do
{语句;}
while(判断语句);
固定结构,如果还无法理解,背住就行了.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-10-04
我是这样理解的,C语言在设计的时候 大概是这样想的
while(表达式) 语句 的格式有点像
if(表达式) 语句 ,所谓语句,就是里面已经有“;”了,也就是说语句的前半部分是条件的判断,不把它们看成是语句 ,而是表达一个判断的信息。

do
循环体语句
while(表达式);
在这个结构中,循环一开始就已经执行了,而while(表达式)是要表示一个停止循环的信息,这个比较特殊,剖去所有的东西,其实他是一条独立的语句,即:
do...while(停止条件);
是一个语句 。
我是这样理解的,这样的结构通常我都是死记住的,也不知道C的设计者是怎么想的,或许这就是语法吧,习惯了就好。
最后祝你在C语言方面取得更大的进步。