for 和 while 的区别?

来源:百度知道 编辑:UC知道 时间:2024/05/30 18:38:30
例:for(i=5;i>0;i--)
printf("***\n");
这里面i--和--i没有区别

例:int a=5;
while(--a) 这里a--与--a是不同的
{
printf("*****\n");
}

为什么呢?

都么说到点子上= =!
for循环是把i>0做为循环条件。
也就是说,这里i--,--i相当语句 。
无论怎么循环,i后的值都减一。
与循环条件无关。
while循环是把--a作为循环条件。
a--.是先测试a的值,在减一。
--a,是先减一,然后测试。

判断for循环是否继续的是for后面括号里中间那个表达式,也就是i>0,对于--i和i--来说,这个i是一样的
但是判断while循环是否继续的是while括号里的表达式,例子里也就是i的值,i--和--i中作为判断表达式的i的值不同,i--是先判断i再让i=i-1,--i是先i=i-1,然后判断i

for(i=5;i>0;i--)
printf("***\n");
i--和--i没有区别.
因为:i先初始化为5,再判断是否满足表达式(i<5), 满足则执行输出语句,不满足就结束for循环.这之后再做i--或--i,无论是i--还是--i,i的值都是依次为4 3 2 1 0,i为0时结束for循环,所以i--与--i没有区别.
while(--a)
{
printf("*****\n");
}
这里a--与--a是不同的
因为:在while语句中,先判断的是表达式是否为真.
--a与a--的区别是:--a是a先自减再参与运算,a的值依次是4 3 2 1 0
执行4次printf
a--是a先参与运算再自减,a的值依次是5 4 3 2 1 0
执行5次printf

首先要明确:单独的--a和a--是没有区别的,只有在赋值语句、比较语句或其它语句中时面(如b=--a和b=a--)才有区别。
对于for循环:for(i=5;i>