一些bug1

1、循环的限制条件在循环过程中变化
这个错误for一般是不会犯的,因为for的循环变量的变化主要在for的刮号中,限制条件也在其中。其它地方要用的话,最多就是用一下它的值而不会对它进行修改。
但是while循环的时候,循环变量的变化是在函数体中进行的,所以如果变化过了、稍不注意就会过头。
例如:
int pbeg[offset];
//初始化pbeg;乱序,
int *pend= pbeg + offset;
int *p = pbeg;
//找出正数中最小的;
int i = 0;
while(p != pend)
{
    while(*p <= 0)++p;
    //找出最小的正数数据。
    if (i>*p) i = *p;
//对p作一些处理;
    ++p;
}
如果这个pbeg的最后几个数据正好是全是负数,那么就会数组越界了。
这段代码的错误就是在while中又大量的改变的循环变量。
一个办法,就是限制条件改为<或者>,而非!=。这样就可以解决了。
另外的办法就是老老实实的+1,不要用循环来改变循环变量!!!
while(p != pend)
{
    if(*p<=0)
{
    ++p;
    continue;
}
    //找出最小的正数数据。
    if (i>*p) i = *p;
//对p作一些处理;
    ++p;
}
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值