请问语句if ((cond = strcmp(word, tab[mid].word)) < 0)实现了什么功能呢?谢谢

来源:百度知道 编辑:UC知道 时间:2024/07/03 14:26:09
int binsearch(char *word, struct key tab[], int n)
{
int cond;
int low, high, mid;

low = 0;
high = n - 1;
while (low <= high) {
mid = (low+high) / 2;
if ((cond = strcmp(word, tab[mid].word)) < 0)
high = mid - 1;
else if (cond > 0)
low = mid + 1;
else
return mid;
}
return -1;
}

strcmp( s1, s2 ),功能是:比较字符串s1和s2。
当s1<s2时,返回值<0
当s1=s2时,返回值=0
当s1>s2时,返回值>0

PS:这里的字符串比较是 逐字符进行比较,按照 ASCII字符 顺序比较大小

因此,这里的 是先比较 word 和 tab[mid].word,将返回结果赋值给 cond 然后判断 cond 是否 小于 0

if ((cond = strcmp(word, tab[mid].word)) < 0)
如果word比中间的那个小,就查左边的

因为要查询的那组数据本身就是有序的.升序
所以,如果比中间的小,就一定在中间的左边