while(i-->0) 表示当i大于0时循环,然后i进行自减
后缀--表示先使用变量,再进行变量自减
(i-->0) 就是先判断i是否大于0,然后i再自减:i=i-1
代码分析:
第一次:
int i=5, s=0;
while(i-->0) //i初值为5,先判断5>0是否为真,然后i=i-1=4
{
//第一次进到循环中,i就是4
if (i%2) //判断i是否为奇数,第一次,i=4不是,走else
s+=i;
else
s+=i--; //此句相当于,s=s+i=0+4=4; i=i-1=3;
}
第二次:
while(i-->0) //i值为3,先判断3>0是否为真,然后i=i-1=2
{
//进到循环中,i就是2
if (i%2) //判断i是否为奇数,i=2不是,走else
s+=i;
else
s+=i--; //此句相当于,s=s+i=4+2=6; i=i-1=1;
}
第三次:
while(i-->0) //i值为1,先判断1>0是否为真,然后i=i-1=0
{
//进到循环中,i就是0
if (i%2) //判断i是否为奇数,i=0不是,走else
s+=i;
else
s+=i--; //此句相当于,s=s+i=6+0=6; i=i-1=-1;
}
第四次:
while(i-->0) //i值为-1,先判断-1>0是否为真(不为真,结束循环),然后i=i-1=-2
所以,最终s=6 i=-2
判断i是否为零,然后自减……
比如,当i=5时,由于5不等于0,所以,条件成立,进入循环,此时i=4;
依次进行循环,直到i=0,此时条件不成立,退出循环体,此时i又自减依次,因此i的值为-1
是i--。先使用i的值,判断i是否>0。判断之后,马上使i的值自减1.