C++问题,while(i-->0) 什么意思

int i=5, s=0;
while(i-->0) { if (i%2) s+=i; else s+=i--;}
while(i-->0) 什么意思,是不是和i>0差不多?
我懂了,没事了谢谢各位

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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-27
判断i是否为零,然后自减……
比如,当i=5时,由于5不等于0,所以,条件成立,进入循环,此时i=4;
依次进行循环,直到i=0,此时条件不成立,退出循环体,此时i又自减依次,因此i的值为-1本回答被提问者采纳
第2个回答  2010-12-27
是i--。先使用i的值,判断i是否>0。判断之后,马上使i的值自减1.

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网