后减减,什么时候减减,参考该文。
1、--a //前减减
int a = 2;
while(--a>0){}
a=1,执行循环体;
a=0,退出循环。
完全等价于:
int a = 2;
a--;
while(a>0){
a--;
//do sth.
}
a=1,执行循环体;
a=0,退出循环。
2、a-- //后减减
int a = 2;
while(a-->0){}
2>0,a==1,执行循环体;
1>0,a==0,执行循环体;
0不大于0,a==-1,退出循环。
并非完全等价于:
int a = 2;
while(a>0){
a--;
//do sth.
}
因为,while(a-->0) 自减条件在while循环中,即使条件不符,后减的a,仍会执行;
但如果a--放在了循环体中的话,后减的a就不会执行了。所以,二者的区别是a的区别:放在循环条件的a比放在循环体中的a大1。
即:等价于以下程序。
int a = 2;
while(a>0){
a--;
//do sth.
}
a--;
a==2,执行循环;
a==1,执行循环;
a==0,退出循环;
a--; //a==-1;
由程序测试可知,在执行完while(ab-->0)后,变量ab已经执行了--操作了。
3、总结:
自增或自减运算符放在循环条件中,代码更加简洁。
好多情况下,我们将表达式放在循环条件中,
比如:
while(getchar())
4、while循环与for循环的区别
//while循环中的i++位置更加灵活
int i = 0;
while(i<10)
{
i++;//i++可以放在循环体的前面
//do sth.
i++;//i++可以放在循环体的最后
}
//for循环中的i++,完全等价于i++在while循环体末尾的情况,只有执行了循环内容,才会执行i++
for(int i = 0;i<10;i++){}