其实,是一个很简单的错误。只要稍微用心点,就不会发生,可是我就偏偏发生了,而且好像这是第二次。
我是需要x和x_last不同时,doSomeThing(),直到x和x_last一致。因为觉得if看起来不舒服,结果写了以下愚蠢的代码:
while( x < x_last-- ) doSomeThing();
while( x > x_last++ ) doSomeThing();
初看,自己真的没觉得有什么错,可惜的就是x_last--会执行到x == x_last了,还x_last--一次,从而,我那可怜的x > x_last ++也被判断了,还doSomeThing()了一次。
还是不喜欢if(顺便,个人不觉得这里有什么实际的效率损失),改为了以下形式:
while( x < x_last )
{
x_last--;
doSomeThing();
}
while( x > x_last )
{
x_last++;
doSomeThing();
}
下次,如果有人打算把类似第二个while的方法,简写为第一个while时,要小心了哦(俺就是想把第二个简写为第一个,而且觉得加上if else 难看,所以,犯了这个错误两次,第一次找出来了,结果等了几个月后,居然又误入歧途。呵呵,俺下次就会高度重视了!)。