Programming languages 为什么布尔变量的默认值往往为false?

Programming languages 为什么布尔变量的默认值往往为false?,programming-languages,theory,Programming Languages,Theory,据我所知,C#、VB、Java和JavaScript中布尔变量的默认值是false(或者在JavaScript中,“行为类似false”更准确),我相信还有许多其他语言都是这样 我想知道为什么会这样?为什么语言设计者选择默认值为false?对于数值,我可以看到零是一个逻辑选择,但我不认为false比true更自然 另外,有没有默认值为真的语言?从语义的角度来看,布尔值代表一种条件或状态。许多语言假设,如果没有初始化,则不满足条件(或者这种状态为空,或者其他)。它像一面旗帜。从另一个角度考虑。如果

据我所知,C#、VB、Java和JavaScript中布尔变量的默认值是
false
(或者在JavaScript中,“行为类似false”更准确),我相信还有许多其他语言都是这样

我想知道为什么会这样?为什么语言设计者选择默认值为
false
?对于数值,我可以看到零是一个逻辑选择,但我不认为
false
true
更自然


另外,有没有默认值为真的语言?

从语义的角度来看,布尔值代表一种条件或状态。许多语言假设,如果没有初始化,则不满足条件(或者这种状态为空,或者其他)。它像一面旗帜。从另一个角度考虑。如果布尔值的默认值为true,那么该语言的语义将告诉您任何条件最初都已满足,这是不合逻辑的

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


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

“布尔值的默认值为false”的观察结果是基于什么?除了我自己的经验,请参见C#中的默认值:;Java中的默认值:等。添加到@deceze,您应该为每种语言初始化一个布尔变量,并使用false。我不同意这是不合逻辑的;我可以想到很多最初满足的条件(例如:我还活着吗?),您只需要重新表述一个变量,就可以创建一个每个条件都会得到最初满足的世界(例如:
已被初始化
需要初始化
)。我同意你关于0/1内部存储的观点。是的,你说得对!有很多可能的条件在一开始是正确的,而不是在编程时。什么都不存在——除非你让它存在。一切从零开始。如果希望bool to init为true,则需要额外的操作来设置bool的位。最小阻力路径为零。