一道关于C语言的while循环题目,请解释一下具体原理是什么

#include<stdio.h>

main()
{
int i=6;

while(i--)

printf("%d",--i);

printf("\n");
}
输出结果是420, 请解释一下这段代码具体是怎么运行的
我想知道为什么最后是输出420

第1个回答  2013-12-15
首先要明白i--和--i的区别,while(i--)的意思是先判断while(i),不管结果是真是假i都要-1,所以第一个i是6,判断问真,然后i--变成5,进入打印。打印的时候是--i,这个是先对i减1再执行语句,所以i变成4后才进行打印。接下来又是一轮循环,4为真,然后减一变3,进入打印,先减一变2再打印。2为真变1进入循环,变0打印。判断0为假,退出循环。
第2个回答  2013-12-15

上述代码实质是这样:

main()
{
    int i=6;
    while(i--) {
        printf("%d",--i);
    }
    printf("\n");
}

while 判断之后执行 --,i 递减为5,然后执行 printf ,因为 printf 中 -- 前置,i 再递减为4。

所以先输出了4。

然后重复一次,输出为2。

再重复一次,输出为0。这时候 while 判断 i 为0,中止循环。(如果这时候再 printf ,会看到 i 为-1。

追问

为什么最后会输出420?

追答

是分别输出了三次,第一次输出了4,第二次输出了2第三次输出了0,而不是一次输出了四百二十(420)。
如果你改下,把 printf("%d",--i); 改为 printf("%d\n",--i); 就能看到是分成三行输出的。

本回答被提问者采纳
第3个回答  2013-12-15
#include<stdio.h>

main()
{
int i=6;

while(i--) // 先判断i,然后i-- 变成5

printf("%d",--i); // 先--i;变成4 输出。接着返回到while(i--)重复

printf("\n");
}
第4个回答  2013-12-15
是错误的代码哦追问

代码没有错,我自己试过了,最后输出结果是420