请问大神们:第三行中定义mid的时候为什么不能直接写上mid=(low+high)/2?(试了一下是无限循环,不出现结果),为什么一定要在while函数中才能描述表达式呢?
#import <Foundation/Foundation.h>
int ZheBanSearch(int a[],int len ,int key){
int low=0,high=len-1,mid;
while (low<=high) {
mid=(low+high)/2;//mid的表达式必须在这里进行定义,在上面定义会没有输出
if (key>a[mid]) {
low=mid+1;
}else if(key<a[mid]){
high=mid-1;}
else{
return mid;}
}
return -1;
}
int main(int argc, const char * argv[]) {
int a[]={-8,37,89,99,128};
int b=ZheBanSearch(a,5,128);
printf("b=%d\n",b);
return 0;
}