什么"如果<b <c然后"实际上在vb.net中做了什么?

jon*_*jon 2 vb.net syntax operators

这是一些"坏"代码:

Module test
    Sub Main()
        Console.WriteLine("1<2 =   " + cstr((1<2)))
        Console.WriteLine("2<1 =   " + cstr((2<1)))
        Console.WriteLine("1<2<3 = " + cstr((1<2<3)))
        Console.WriteLine("3<2<1 = " + cstr((3<2<1)))
    End Sub
End Module
Run Code Online (Sandbox Code Playgroud)

这个输出是:

1<2 =   True
2<1 =   False
1<2<3 = True
3<2<1 = True
Run Code Online (Sandbox Code Playgroud)

1<2<3 是正确的,但不是正确的理由.

3<2<1评估为True.为什么?

有人能解释一下这里发生了什么吗?

我知道我应该使用a<b and b<c但我想知道当你使用连续运算符时会发生什么.即,为什么编译器不哭!像这样的语法用于别的东西吗?

Pho*_*non 9

它从左到右进行评估,因此3<2<1也是如此(3<2)<1.因为括号中的表达式是假的,所以整个事物评估0<1哪个是真的.