在课堂上处理项目并遇到我应该使用的这段代码。
什么是“LT”运营商?我认为它是某种类型的设备,但我以前从未见过这样的事情(我是新的),我的编译器一直告诉我它未定义。
int indexSmallest (struct dyArray * v, int i, int j) {
/* return index of smallest element */
if (LT(dyArrayGet(v, i), dyArrayGet(v, j))
return i;
return j;
}
我知道我可以做(compare(x, y) == -1)
来解决这个问题,但我想尝试保留给我的代码。
答案 0 :(得分:4)
如前所述,LT
不是C的标准部分。它很可能是一个宏,如果您希望使用显示的代码,您应该已经获得了宏的定义,可能在标题中。
可能的实现如下,假设dyArrayGet()
返回的类型是数字类型:
#define LT(lhs, rhs) ((lhs) < (rhs))
我不相信这种情况会有任何好处。它可能为比较字符串提供一些价值,其定义可能是:
#define LT(lhs, rhs) (strcmp(lhs, rhs) < 0)
这完全取决于dyArrayGet()
函数返回的内容。
答案 1 :(得分:2)
LT不是运营商。我怀疑你认为它是一个操作符,因为你不熟悉if(a)-syntax。这些代码段是等效的:
int i = 5;
if (i != 0)
foo();
int i = 5;
if (i)
foo();
LT可以是函数或宏。