在二分查找中,我们常用到以下表现
int low=x;
int high=y;
int mid=(low+high)/2;
由于C++在处理整数除法的时候,是向零取整的,即:
int a=(1+2)/2;//a=1
int a=(-1-2)/2,//a=-1
故low<=mid<high
由此在有关 的二分查找实现中(类似:Find Peak Element—LeetCode第三种方式点击打开链接),我们用mid与mid+1相比较,以避免mid=low是发生的越界问题。
而C++将浮点数赋值给整型变量的时,是做了截断,因为两个类型的编码方式不同,整数是以补码的形式表示,浮点数是以移码的方式表示,截断是将其小数部分舍去这里面不存在 向谁取整的问题就是把小数部分抹掉