Mik*_*ika 14 boolean operator-precedence operator-keyword
我想知道编程语言中的运算符优先级是否取决于实现,或者是否存在所有语言都遵循的固定规则.如果可能,您可以先订购具有最高优先级的以下运算符:AND,OR,NOT,XOR.
您已经看到,当表达式将&&与||混合时 必须按正确的顺序进行评估。像算术一样,可以使用括号将操作数与正确的运算符分组。与算术运算符一样,逻辑运算符的优先级决定了在没有括号的情况下如何对事物进行分组。
在表达式中,优先级最高的运算符将首先与其操作数分组,然后第二高的运算符将与其操作数分组,依此类推。如果存在多个具有相同优先级的逻辑运算符,则会从左到右对其进行检查。
程序员通常使用括号将操作数分组在一起以提高可读性,即使仅使用运算符优先级也可以使用。
一个简单的Java测试,它们是正确的:
@Test
public void booleanPrecedenceTest() {
boolean A = true, B = false, C = true, D = false;
Assert.assertTrue((A || B && C) == (A || (B && C)));
Assert.assertTrue((A && B || C && D) == ((A && B) || (C && D)));
Assert.assertTrue((A && B && C || D) == (((A && B) && C) || D));
Assert.assertTrue((!A && B || C) == (((!A) && B) || C));
}
Run Code Online (Sandbox Code Playgroud)