-1

从事一个班级项目并遇到我应该使用的这段代码。

什么是“LT”运算符?我认为它是某种小于设备,但我以前从未在 C 中看到过这样的东西(我是新手),而且我的编译器一直告诉我它是未定义的。

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)解决这个问题,但想尝试保留给我的代码。

4

2 回答 2

4

如前所述,LT它不是 C 的标准部分。它很可能是一个宏,如果您希望使用显示的代码,您应该已经获得了宏的定义,可能在标题中。

下面是一个可能的实现,假设返回的类型dyArrayGet()是数字类型:

#define LT(lhs, rhs)  ((lhs) < (rhs))

我不相信在这种情况下它有什么好处。它可能为比较字符串提供一些价值,其中定义可能是:

#define LT(lhs, rhs)  (strcmp(lhs, rhs) < 0)

这完全取决于dyArrayGet()函数返回的内容。

于 2013-02-24T22:41:18.473 回答
2

LT 不是运营商。我怀疑你认为它是一个运算符,因为你不熟悉 if (a)-syntax。这些代码片段是等效的:

int i = 5;
if (i != 0)
  foo();

int i = 5;
if (i)
  foo();

LT 可以是函数或宏。

于 2013-02-24T22:34:53.797 回答