min 的最佳实现是什么?

What is the best implementation of min?

有区别吗

int min(int a, int b) {
    return (a < b) ? a : b;
}

int min(int a, int b) {
    return (b < a) ? b : a;
}

是否有任何特定原因更喜欢其中之一?

此问题专门针对 C 和 C++ 语言。我知道这些是不同的语言,并且在这里针对 C++ 提出了类似的问题:Correct implementation of min .

我对可能与一种语言有关而不与另一种语言有关的原因感兴趣。

不,没有。在所有定义的情况下,这两个实现是等效的。 (单个编译器可能会表现出性能差异,但不会表现出功能差异。)

如果函数不仅仅与整数有关,情况会有所不同。正如 chux 在评论中提到的那样,浮点数可以同时具有 a<bb<a false,即使它们的位模式不同,例如 negative/positive 零,或者至少有一个是 NaN .从技术上讲,这也可能发生在奇异的(但符合标准的)整数表示形式(通过 -0 或填充位),但 AFAIK 没有其他符合标准的编译器会这样做。