【发布时间】:2016-12-17 22:15:47
【问题描述】:
在搜索数组中不存在的元素时,我对理解代码的行为感到困惑。
- 我要查找的元素索引的结果始终为零,同时将其声明为
int index;。 - 我正在寻找的元素索引的结果是随机数,同时将其声明为
size_t index;在下面的代码中将变量索引声明为int index;和size_t;有什么区别。
代码
#include <stdio.h>
#define SIZE 5
int main(void)
{
int numbers[SIZE]={1,2,3,4,5};
int search =0; // This variable define the required number i am searching for
int start = 0 ;
int end = SIZE-1 ;
size_t index;
while (start <= end)
{
int middle = (start+end)/2;
if (search == numbers[middle])
{
index = middle;
}
if (search > numbers[middle])
{
start = middle+1 ;
}
else
{
end= middle-1 ;
}
}
printf("The index of the element is %d",index);
return 0;
}
【问题讨论】:
-
%d不是打印size_t的正确格式说明符。 -
index = middle;-->index = middle; break;还有size_t index;未初始化。 -->size_t index = SIZE;(SIZE表示“未找到”) -
size_t 的正确说明符是什么?@Hurkyl
-
对于符合 C 标准的实现,请使用
zu。在 Windows 上使用lu。 -
当没有找到数据时
index没有设置任何值,因此int和size_t都被初始化(这是未定义的行为)。初始化时尝试设置默认值index
标签: c algorithm int declaration binary-search