#includeint main(void){int y,a;y=2,a=1;while(y--!=-1){do{a*=y;a++;}while(y--);}printf("%d,%d\n",a,y);}为什么运行出来是1 -2我纠结了很久还是-1 -2

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/12 07:52:33
#includeint main(void){int y,a;y=2,a=1;while(y--!=-1){do{a*=y;a++;}while(y--);}printf(

#includeint main(void){int y,a;y=2,a=1;while(y--!=-1){do{a*=y;a++;}while(y--);}printf("%d,%d\n",a,y);}为什么运行出来是1 -2我纠结了很久还是-1 -2
#include
int main(void)
{
int y,a;
y=2,a=1;
while(y--!=-1)
{do{a*=y;a++;}while(y--);}
printf("%d,%d\n",a,y);
}
为什么运行出来是1 -2
我纠结了很久还是-1 -2

#includeint main(void){int y,a;y=2,a=1;while(y--!=-1){do{a*=y;a++;}while(y--);}printf("%d,%d\n",a,y);}为什么运行出来是1 -2我纠结了很久还是-1 -2
/*试一下这个吧,试着把程序中的变化打印出来.内层循环只在第一次外循环时进行,当第一次内循环结束后外循环才会继续,而且内循环在之后,y=-1,外循环也不再进行,直接退出.*/
#include
int main(void)
{
int y,a,i;
i=1,y=2,a=1;
printf("%before all,a = %d,y = %d\n",a,y);
while(y--!=-1)
{
printf("first while begin,a = %d,y = %d\n",a,y);
do
{
printf("\t%dst dowhile begin,\ta = %d,y = %d\n",i,a,y);
a*=y;
a++;
printf("\t%dst dowhile end,\ta = %d,y = %d\n",i,a,y);
i++;
}
while(y--);
printf("first while end,a = %d,y = %d\n",a,y);
}
printf("%d,%d\n",a,y);
//getchar();
}