a += b != a & 1
我在代码中遇到了这个声明,但我不确定代码的最后部分(!= a & 1
)是做什么的。那是做什么的?
答案 0 :(得分:6)
首先,您必须参考语言规范以了解操作顺序。括号括起来,这将是:
a += (b != (a & 1))
a & 1
是按位的(如果1
为奇数,则为a
,否则为0
),然后将其结果与b
进行比较并且布尔值的结果将被添加到a
。当然,最新的有意义的a
需要是一种可以支持它的类型(例如,整数类型通过将True
赋值为1
和{ {1}}的值为False
)。
总结一下,如果0
如果b==0
为偶数,a
会增加a
,如果b==1
a
增加a
b
0
是奇怪的。否则,1
既不是a
也不是GalleryViewController
,它会增加ViewController
。
我注意到有些评论并没有注意到优先顺序,即使在python中它们有时也会让人感到困惑(特别是如果你已经被C语言的人混淆了)。根据经验,我建议你明确地在子表达式周围放置圆括号,如果你有疑问 - 或者甚至在单独的政治家中将其分解。通常,编译器无论如何都会充分利用它。