是否存在“A == B == C”的语言,其中A,B和C都是非布尔类型?

时间:2015-08-19 16:28:03

标签: language-agnostic type-conversion

没有在C#中思考我试图比较三个对象。它失败了,并解释了为什么[since(typeof(“A == B”)== bool)和(typeof(C)!= bool)这是一个无效的比较]。任何语言都支持这样的短路逻辑吗?

1 个答案:

答案 0 :(得分:1)

有几种语言可以让你做这样的多个条件。 但我能想到的第一个是Python

示例:

a = 5
b = 5
c = 5
if(a == b == c):
    print "yes"
else:
    print "no"

将打印"是"在控制台中。

它也适用于其他类型,如下所示:

a = ["A",1]
b = ["A",1]
c = ["A",1]
d = ["A",1]
if(a == b == c == d):
    print "YES"
else:
    print "NO"

现在,C#(以及其他类似C语言)不支持这一点的原因是它们将比较表达式评估为真/假,所以编译器看到的是什么(5 == 5 == 5)是((5 == 5)== 5)它产生:(true == 5)无效,因为你无法将布尔值与整数进行比较,你实际上可以写(a == b == c)if c是一个布尔值,因此(5 == 5 == true)将起作用。