a += b != a & 1
Run Code Online (Sandbox Code Playgroud)
我在代码中遇到了这个语句,但我不确定代码的最后部分(!= a & 1)是做什么的.那是做什么的?
首先,您必须参考语言规范以了解操作顺序.随着括号被推出,这将是:
a += (b != (a & 1))
Run Code Online (Sandbox Code Playgroud)
这a & 1是按位和(1如果a是奇数和0其他),然后将其结果进行比较,b并将添加布尔值的结果a.现在当然对于最新的有意义的a需要是一个可以支持它的类型(例如,整数类型通过将其True视为具有值1和False值而具有0).
概括起来讲,如果b==0它会增加a,如果a是偶数,如果b==1它会增加a,如果a是奇数.否则如果b既不0是1也不会增加a.
我注意到有些注释没有注意到优先顺序,甚至在python中它们有时也会让人感到困惑(特别是如果你已经被来自C的那些人混淆了).根据经验,我建议你明确地将括号括在子表达式周围,如果你有一点疑问 - 或者甚至在单独的州政府中分解它.通常,编译器无论如何都会充分利用它.
| 归档时间: |
|
| 查看次数: |
163 次 |
| 最近记录: |