这个循环究竟怎么运行的,可以具体叙述一下吗?我手算结果与计算机给出的结果一直不一样,麻烦看看我的注释对不对
#include<stdio.h>
int main()
{
int a = 2, b = 1;
while (a-- != -1) //a先自减再判断a是否为-1
do
{
b *= a;
b++;
} while (a--); //while(a--)的意思是先判断a是否为0再自减
printf("%d %d", a, b);
return 0;
}
两层循环,while的循环体是 do..while 循环;a--是先取 a 的值使用之后再自减一。
1、while (a-- != -1) 条件成立,a--变成1,执行循环体 do...while
2、b *= a 得 b 等于1,b++变成2,while(a--) 条件成立,a--变成0,继续执行 do
3、b *= a 得 b 等于0,b++变成1,while(a--) 条件不成立,a--变成-1,do...while循环退出,返回执行外层循环 while(a-- != -1),条件不成立,a--变成-2,退出循环。
所以,结果是 a=-2,b=1
拆解一下while里的内容就是判断a!= -1再a--