【发布时间】:2011-05-30 12:31:32
【问题描述】:
在大多数编程语言中,可以使用1 和0 代替True 和False。但是,根据我的经验,整数似乎总是更容易使用。
以下是我的意思的一些示例:
if x is True: x = False
else: x = True
对
x = abs(x-1)
__
if x is False: a = 0
else: a = 5
对
a = 5*x
在哪些情况下,布尔值比 1 或 0 更简单/更有效?
【问题讨论】:
-
我敢肯定
x = !x和a = x ? 5 : 0更容易 -
我还要指出
true不一定是1。 IIRC,false保证为0,但true仅被定义为非假,更具体地说为~0 == 0xffffffff == -1,而不是1。假设true == 1不是一个好主意。如果你想让你的真值是1,就用1,用整数;否则将您的布尔值用作布尔值,并且不要混合它们。 -
如果你想使用 int 技巧来模拟布尔值,那么
x = 1 - x比x = abs(x - 1)更好。第一个例子真的很糟糕:将编写not的糟糕方式与模仿not的糟糕方式进行比较。