比较三个整数值

7
有没有可能出现这样的情况?
if(a == b == c)

或者是

if((a== b) && (b == c)) 

唯一的方式是什么?

或者有什么更酷的方法来实现这个目标吗?

5个回答

10
在一些编程语言中,你可以使用这种速记方式。例如在 Python 中,a == b == c 大致相当于表达式 a == b and b == c,但是 b 仅被计算一次。
然而,在 Java 和 Javascript 中,你不能使用简写版本,必须按照第二个例子的方式书写。第一个例子将大致相当于以下内容:
boolean temp = (a == b);
if (temp == c) {
    // ...
}

这并不是您想要的结果。在Java中,a == b == c语句只有在c为布尔类型时才能编译通过。


1
在Java中,我们没有“==”的快捷运算符。因此,我们最终会进行单个等式比较。
但是,如果您认为您将需要具有不同数量参数的功能,我建议您实现一个类似于这样的函数。以下是未处理异常情况的示例代码。
 public static boolean areTheyEqual(int... a) {
        int VALUE = a[0];   
        for(int i: a) {
            if(i!= VALUE)
                return false;
        }       
        return true;
    }

0
在Scala中,您可以使用元组来实现这一点:
(a, b) == (c, c)
这将检查a == c和b == c,即相当于a == b == c。

0
在JavaScript中,最安全的方法是使用a === b && b === c。我总是避免使用==,而是选择使用===来保持自己的理智。这里有更详细的解释。


-2

要从三个数字中获取最大值,可以使用一行代码:

int max = (a > b && a > c) ? a : ((b > a && b > c) ? b : c);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接