C小于运算符

C小于运算符,c,C,在课堂上做一个项目,遇到了我应该使用的这段代码 什么是“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

在课堂上做一个项目,遇到了我应该使用的这段代码

什么是“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;
}

我知道我可以做一个
(比较(x,y)=-1)
来解决这个问题,但我想尝试保留给我的代码。

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

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

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

它可以是一个函数或宏。

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

假设
dyArrayGet()
返回的类型是数字类型,则其可能的实现如下:

#define LT(lhs, rhs)  ((lhs) < (rhs))
#定义LT(左侧,右侧)((左侧)<(右侧))
我不相信在这种情况下有任何好处。它可能为比较字符串提供一些值,其中定义可能是:

#define LT(lhs, rhs)  (strcmp(lhs, rhs) < 0)
#定义LT(左、右)(strcmp(左、右)<0)

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

它不是运算符。它要么是宏,要么是函数。也许你不知道这一点:“if(a)”与“if(a!=0)”几乎相同。Fortran IV(1966)有比较运算符
.LT.
.GT.
.LE.
.GE.
.NE.
.EQ.
,从那时起,这些名称就被频繁使用。Perl仍然使用
lt
gt
le
ge
ne
eq
来比较字符串。壳牌
测试
操作员使用
-lt
-gt
-le
-ge
-ne
-eq
来比较数字(部分原因是
除了区分OP使用的术语“操作员”之外,你没有真正回答这个问题。@LightnessRacesinOrbit好吧,除了没有建设性之外,你的评论毫无用处。问题是:“什么是“LT”操作符?”第二句。是的,你没有回答这个问题。