布尔什么时候比整数更好?

Joh*_*ard 6 theory int boolean

在大多数编程语言,1并且0可以用来代替TrueFalse.但是,根据我的经验,整数似乎总是更容易使用.

以下是我的意思的一些例子:

if x is True: x = False
else: x = True
Run Code Online (Sandbox Code Playgroud)

VS

x = abs(x-1)
Run Code Online (Sandbox Code Playgroud)

__

if x is False: a = 0
else: a = 5
Run Code Online (Sandbox Code Playgroud)

VS

a = 5*x
Run Code Online (Sandbox Code Playgroud)

在什么情况下,布尔数比1或0更简单/更有效?

Gus*_*ors 11

您应该始终在高级语言中使用任何布尔内置类型作为布尔值.你的第二个例子是在一个x真实的情况下调试的恐怖,但是等于一个不同于1的值,并且是一个棘手的例子来找出任何新的代码开发人员 - 尤其是那些不熟悉你的编码风格的开发人员.怎么了?

x = !x;
Run Code Online (Sandbox Code Playgroud)

要么

a = x ? 5 : 0;
Run Code Online (Sandbox Code Playgroud)


Dav*_*vid 7

一个整数可能比布尔值更有效的例子将在关系数据库中.一个位列通常不能被索引(我不一定能代表该语句中的所有数据库,因此"通常"),因此如果需要索引,像tinyint这样的东西会更有意义.

请记住,根据使用情况和使用它的系统,虽然布尔"占用更少的空间",因为它只是一个位(取决于实现),整数是硬件的本机字大小.(某些系统可能会使用一个完整的单词作为布尔值,实际上在金属上运行时基本上不会占用空间,只是为了使用简单的单词大小.)

在高级编程语言中,布尔和int之间的选择实际上更多的是代码可读性/可支持性而不是效率.如果值确实限于"true"或"false",那么布尔值是有意义的.(这个模型是否处于给定状态,例如"有效",或者不是?它永远不会是第三种选择.)另一方面,如果目前有两个选项,但有一天可能会有更多选项,它可能会很想使用布尔值(即使只是"现在"),但逻辑上使用int(或枚举)更有意义.

在代码中执行"聪明"的事情时,请记住这一点.当然,做一些快速的数学运算而不是使用布尔值可能看起来更时尚,更酷,但这对代码的可读性有什么影响?太聪明可能很危险.

  • @KevinDTimm:具有讽刺意味的是我没有丢失:)我认为这将是其他信息答案之一,只包括其余部分. (2认同)

dar*_*ioo 6

为了获得可读性和良好的意图,选择布尔值为真/假是更好的选择.

你知道你只有两种可能的选择.对于整数,事情可能会有点棘手,特别是如果你使用0作为false而其他任何事情都是真的.

使用整数表示true/false时,你会变得太聪明,所以要小心.

使用布尔值将使您的意图在6个月后更加清晰,以及其他维护您代码的人.你必须使用的脑循环越少越好.