为一个类工作,并遇到我应该使用的这段代码。

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

最佳答案

如前所述,LT不是标准的C语言。它很可能是宏,并且如果希望使用所示的代码,则应该在标头中为宏定义一个宏。

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

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


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

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


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

关于c - C小于运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15057413/

10-16 04:49