【发布时间】:2015-01-06 02:18:18
【问题描述】:
我来自 C 背景,因此 Python 中的这个问题真的让我感到困惑
考虑一下
print ~(1 << 1)
这会正确打印-3。
考虑一下
print ~(1 << 0)
这会标记类似的错误
TypeError: bad operand type for unary ~: 'long'
我检查了班次计数的其他各种正值,它工作正常。只有零班次计数似乎不起作用。我在 SO 上找到的关于一元运算符的所有类似帖子都涉及其他运算符,例如 +、- 等,但不是 ~
我只是时不时地涉足 Python,所以我可能会遗漏一些愚蠢的东西,但谷歌搜索很有帮助
PS:我在codeskulptor 上运行它,它可能使用 Python 2.7,但我不确定
编辑:这原来是 Codedeskulptor 中的一个错误。我写了一封邮件给 Rixner 教授,他是主要的开发者,他注意到了这个错误。谢谢大家。
【问题讨论】:
-
为我工作 (2.7.6)。你用的是什么版本的python?
-
另外,在 Python 3.0 及更高版本中 print ~(1 print (~(1 << 1)) 打印 -3。在 Python 3.3 上为我工作。我也在 IDEONE here 上运行过它
-
@EthanFurman 它也没有被标记为 [python2],因此除非问题中明确提及,否则不应假定任何版本。 [python] 是关于两个版本的。
-
这在 CPython、Jython、IronPython 和 PyPy(2.X 分支)中对我有用,所以你一定是在一个非常奇怪的环境中。
-
在 2.4、2.5、2.6 和 2.7 上为我工作。
标签: python bit-manipulation typeerror unary-operator