两者之间是否有区别
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。
我对可能与一种语言有关而不与另一种语言有关的原因感兴趣。
答案 0 :(得分:3)
不,没有。在所有定义的情况下,这两种实现都是等效的。 (单个编译器可能会表现出性能差异,但不会表现出功能差异。)
如果函数不仅仅与int有关,那会有所不同。注释中提到的chux浮点数可以使a<b
和b<a
都为假,即使它们的位模式不同(如负/正零)或至少一个是NaN。从技术上讲,这也可能使用奇异的(但符合标准)整数表示形式(通过-0或填充位),但是AFAIK没有其他符合标准的编译器会这样做。