【发布时间】:2016-01-20 05:58:43
【问题描述】:
我最近开始使用 C 进行编程,并且想知道一种更简洁的方法来编写一个简单的函数,该函数根据两个 int 值的相等性返回 1 或 -1。我写的:
int valueCompare(int i, int j) {
if (i != j) {
return -1;
}
else {
return 1;
}
}
它可读但似乎效率低下。我见过使用冒号和问号的返回语句,但是我不熟悉这种风格。有没有人对如何为此编写更有效的函数而不损失可读性有任何建议?
【问题讨论】:
-
您可以为该逻辑使用三元运算符并编写 return i != j ? -1 : 1;
-
write a simple function that returns 1 or -1 depending on the equality of two int values只是一个评论,但在C世界中,返回-1或1本质上是一个布尔函数将是一个相当不寻常的设计选择(或要求) .更常见的是返回0或1(或任何!= 0),在这种情况下,它都会减少到return i == j;。 -
@dxiv 感谢您的建设性和有效的批评;你是对的——我应该使用 return 0 或 1 值,因为我的 main 函数确实返回了 0
-
@SadiRubaiyet 非常感谢您命名我想不到的术语(三元运算符)。鉴于使用它的 return 语句的普遍性(从我在 Google 上看到的),我认为这将是将来在我的 C 代码中使用的一个完全可读的选择。
-
'它可读但似乎效率低' - 效率低怎么办?你应该坚持“可读”。编码很容易,测试不太容易,调试很困难。采用减少整体工作的编码风格。 “聪明”的编码通常只是糟糕的编码。
标签: c