一些关于操作符优先级的资料像这样说,像 !
、~
、+
、-
这样的一元运算符比赋值符号 =
有更高的优先级。然而,以下表达式也是可能的:
!a = true # => false (with warning)
a # => true
~a = 1 # => -2
a # => 1
+a = 1 # => 1
a # => 1
-a = 1 # => -1
a # => 1
考虑到这些结果,我唯一能想到的可能解释是,这些一元运算符的优先级比赋值运算符低。如果是这种情况,那么就意味着我之前提到的信息是错误的。哪个是正确的?还有其他的解释吗?
~a = 1
的行为看起来像~(a = 1)
。 - David Grayson