c语言中')'标记之前的预期主表达式
expected primary-expression before ')' token in c language
我正在练习选择排序并从 Horowitz 的数据结构中复制代码。
我正在处理“')' 标记之前的预期主表达式错误。”
这是我写的代码。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define compare(x, y) (((x) < (y)) ? -1 : ((x) == (y)) ? 0 : 1))
int binsearch(int list[], int searchnum, int left, int right)
{
int middle;
while(left <= right){
middle = (left + right) / 2;
switch(compare(list[middle], searchnum)){ // error occured
case -1: right = middle -1; break;
case 0: return middle;
case 1: left = middle + 1;
}
}
return -1;
}
我想知道我应该怎么做才能解决这个问题。
感谢您的帮助。
#define compare(x, y) (((x) < (y)) ? -1 : ((x) == (y)) ? 0 : 1))
这个宏的末尾有一个额外的右括号。做到:
#define compare(x, y) (((x) < (y)) ? -1 : ((x) == (y)) ? 0 : 1)
如果您愿意,也可以去掉 <
和 ==
比较前后的括号。
#define compare(x, y) ((x) < (y) ? -1 : (x) == (y) ? 0 : 1)
我正在练习选择排序并从 Horowitz 的数据结构中复制代码。 我正在处理“')' 标记之前的预期主表达式错误。”
这是我写的代码。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define compare(x, y) (((x) < (y)) ? -1 : ((x) == (y)) ? 0 : 1))
int binsearch(int list[], int searchnum, int left, int right)
{
int middle;
while(left <= right){
middle = (left + right) / 2;
switch(compare(list[middle], searchnum)){ // error occured
case -1: right = middle -1; break;
case 0: return middle;
case 1: left = middle + 1;
}
}
return -1;
}
我想知道我应该怎么做才能解决这个问题。 感谢您的帮助。
#define compare(x, y) (((x) < (y)) ? -1 : ((x) == (y)) ? 0 : 1))
这个宏的末尾有一个额外的右括号。做到:
#define compare(x, y) (((x) < (y)) ? -1 : ((x) == (y)) ? 0 : 1)
如果您愿意,也可以去掉 <
和 ==
比较前后的括号。
#define compare(x, y) ((x) < (y) ? -1 : (x) == (y) ? 0 : 1)