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

2024年11月20日 09:28
有3个网友回答
网友(1):

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

网友(2):

判断i是否为零,然后自减……
比如,当i=5时,由于5不等于0,所以,条件成立,进入循环,此时i=4;
依次进行循环,直到i=0,此时条件不成立,退出循环体,此时i又自减依次,因此i的值为-1

网友(3):

是i--。先使用i的值,判断i是否>0。判断之后,马上使i的值自减1.