数组越界问题

数组越界问题

&&||的条件处理方式不同,
比如 :a && b,当 a 为的时候,编译器才会继续去判断 b 是否为;若 a 为了,则直接跳过,整个表达式为,没有去判断 b , b 不执行。
a || b,无论 a 为或者, b 都会继续执行判断。

所以,在用 && 的时候要想清楚,哪个条件在前哪个在后会影响到。

看下面例子:

1while(j >= 0 && temp < number[j]){
    number[j+1] = number[j];
    j--;
}
2while(temp < number[j] && j >= 0){
    number[j+1] = number[j];
    j--;
}

以上两种情况,第二种情况下会出现数组越界的情况。
原因:当 j = -1 的时候,temp < number[j]还是会继续执行,而第1种情况则不会。

像这些类似的情况发生的还有
for
while
do… while…
这些语句。

用到这些的时候都要想清楚程序流程,不过有时候确实会没注意到,这个时候就需要一些测试用例的检验了。

你可能感兴趣的:(数据结构和算法)