
void main()
{
int y=2,a=1;
while (y--!=-1)
do{
a*=y;
a++;
}while(y--);
printf("%d,%d\n",a,y);
}
结果是1,-2
请问为什么?请给出每一次循环的计算式子 谢谢~~
是亏备磨双重循环 如果加上两个大括号 在写好看点 就容易理解销斗了滚厅
#include
void main()
{
int y=2,a=1;
while (y--!=-1)
{
do{
a*=y;
a++;
}while(y--);
}
printf("%d,%d\n",a,y);
}
首先这是双重循环
y=2
满足y--!=-1进入第一重循环,此时y=1
do{
a*=y;
a++;
}while(y--);
中第一次
a=1*1+1=2
到while(y--);时y=1满足继续循环,因为y--,所以比较完后y=0
所掘毁以a=2*0+1=1
此时y=0,不满足while(y--);,跳出罪里层循环闷好,此时y=-1
不满足y--!=-1,因为y--,所以比较完后是y=-2
结果蚂散铅是1,-2
-1 表示真,其他表示假
第一次进入do...while循环的时候y=1;
while(y--)执桐森梁行完y=0,a=2;
第局运二次进入do...while循环的时候y=1,a=2;
while(y--)执行完春笑y=-1,a=1,里层循环结束;
while(y--!=-1)先判断y是否等于-1,后y--,y等于-1循环结束;
所有最后输出a=1,y=-2
熟悉下a=y++和a=++y区别,就好理解了!