我想知道编程语言中的操作符优先级是否取决于实现,或者是否有一个固定的规则所有语言都遵循。如果可能的话,请按照最高优先级先排序以下运算符:AND、OR、NOT、XOR。
我想知道编程语言中的操作符优先级是否取决于实现,或者是否有一个固定的规则所有语言都遵循。
如果可能的话,请按照最高优先级先排序以下运算符:AND、OR、NOT、XOR。
我想知道编程语言中的操作符优先级是否取决于实现,或者是否有一个固定的规则所有语言都遵循。
如果可能的话,请按照最高优先级先排序以下运算符:AND、OR、NOT、XOR。
我搜索并发现这个,它说一些像APL和SmallTalk这样的语言没有运算符优先级规则,严格从左到右/从左到右评估表达式。
然而,在大多数语言中,特别是那些派生自C的语言中,所遵循的相对优先顺序为NOT>XOR>AND>OR。
^
作为逻辑异或运算符,您可以使用 !=
,它将计算结果与 XOR 相同。 - Jesse Chisholm您已经看到了当表达式混合使用&&和||时,必须按正确的顺序进行评估。括号可以用来将操作数与正确的运算符分组,就像算术运算一样。与算术运算符一样,逻辑运算符具有优先级,确定在没有括号的情况下如何对事物进行分组。
在表达式中,具有最高优先级的运算符首先与其操作数相组合,然后下一个优先级较高的运算符将与其操作数相组合,以此类推。如果存在几个具有相同优先级的逻辑运算符,则将从左到右检查它们。
程序员通常会使用括号将操作数分组以提高可读性,即使仅仅使用运算符优先级也可以实现相同的效果。
==
左侧的表达式仍将计算出完全相同的值。 - jaro2gwA AND NOT B OR NOT A AND B
或者(A OR NOT B) AND (NOT A OR B)
的简化版本。因此,只有这三个有常见的优先级:NOT > AND > OR。XOR在不同的语言中位置不同,但它肯定不比AND优先级高,也不比OR低。大多数语言(如C/C++/Javascript等)将它放置在AND和OR之间,但在其他语言(如Perl)中,XOR和OR具有相同的优先级。A OR B = NOT(NOT A AND NOT B)
)true xor false or true
应该被评估为真 ((true xor false) or true
),而不是假 (true xor (false or true)
)。 - JuniorA != B
。但是这样会涉及到比较运算符和布尔运算符的优先级顺序,所以要小心。 - Jesse Chisholm布尔运算还是按位运算?没有固定的规则,大多数语言都有类似的规则,但细节上有所不同。在语言定义中查找。
xor
应该被赋予与包含性or
相同的优先级。!
> !=
> &&
> ||
(没有逻辑运算符^
,!=
充当xor)。!
> &
> ^
> |
。Not
> And
> Or
> Xor
。.not.
> /=
> .and.
> .or.
(没有.xor.
,/=
充当xor)。!=
> not
> and
> or
(没有xor
,!=
充当xor)。not
> and
> or
> <>
(没有xor
,<>
充当xor)。std::cout << std::boolalpha;
std::cout << ( true || false && false ) << std::endl; // gives true
std::cout << ( ( true || false ) && false ) << std::endl; // gives false