为什么布尔变量的默认值倾向于为false?

bat*_*wad 5 theory programming-languages

据我所知,在C#,VB,Java和JavaScript中,布尔变量的默认值是false(或者在JavaScript的情况下,“行为类似false”更为准确),而且我敢肯定还有很多其他这种情况下使用的语言。

我想知道为什么会这样吗?语言设计师为什么选择false默认语言?对于数值,我可以看到零是一个合理的选择,但我看不出它false比更加自然true。

顺便说一句,是否有默认语言为true的语言?

Aug*_*sto 5

从语义的角度来看,布尔值表示条件或状态。许多语言假设,如果没有初始化,则条件不满足(或者这样的状态为空,或者其他什么)。它的作用就像一面旗帜。换个角度想一想。如果布尔值的默认值为 true,那么该语言的语义会告诉您最初满足任何条件,这是不合逻辑的。

从实际的角度来看,编程语言通常在内部将布尔值存储为一个位(0 表示 false,1 表示 true),因此在这种情况下,数字类型的相同规则也适用于布尔值。

Java 布尔实例变量的默认值始终为 false,但这不适用于局部变量,您需要对其进行初始化。

  • 我不同意这是不合逻辑的;我可以想到很多最初满足的条件(例如:我还活着吗?),你只需要重新表述一个变量来创建一个每个条件最初都满足的世界(例如:“HasBeenInitialized”与“NeedsToBeInitialized” )。不过,我同意你关于 0/1 内部存储的观点。 (2认同)