C小于运营商

时间:2013-02-24 22:26:38

标签: c

在课堂上处理项目并遇到我应该使用的这段代码。

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

2 个答案:

答案 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可以是函数或宏。