C小于运算符
在课堂上做一个项目,遇到了我应该使用的这段代码 什么是“LT”操作符?我假设它比设备小一些,但我以前在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
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”操作符?”第二句。是的,你没有回答这个问题。