#include <stdio.h>
void main()
{
int y=3,a=2;
while(y--!=-1)
{
do
{
a*=y;
a++;
}while(y--);
}
printf("%d,%d\n",a,y);
}
首先do-while里面能确定的结果a是1,这里没什么疑问,while这里面的判断不是说while(0)这种说法,而是判断while括号内的条件是否为假,由于y--是属于先赋值再运算的原则,while中先判断y是否不为-1,如果y值为-1跳出循环,再进行-1操作,y最终打印出来为-2
while里面为0时结束循环。
要注意的是,i++和++i被称为自增。i++是先进行运算,运算结束之后i的值再加1。而++i是先将i的值加1之后,才进行运算;i--和--i也一样。
举个例子,y--!=-1,y 现在为 0,0 != 1,为TRUE,然后 y = y - 1,此时,y的值等于 -1。