TRUE是否始终具有非零值?

DMK*_*ing 22 language-agnostic boolean

我有一个同事认为TRUE过去被定义为0而其他所有值都是FALSE.我可以发誓我使用的每种语言,如果你甚至可以得到一个布尔值,那么FALSE的值是0.去过TRUE是0吗?如果是这样,我们何时切换?

web*_*mat 29

你的同事感到困惑的0 /非0事件可能是指人们使用数值作为返回值表示成功,而不是真实(即在bash脚本和某些样式的C/C++中).

使用0 =成功可以更精确地指定失败原因(例如,1 =丢失文件,2 =丢失肢体,等等).

作为旁注:在Ruby中,唯一的错误值是nil和false.0为真,但与其他数字不同.0为真,因为它是对象0的实例.


ste*_*yer 20

它可能是在引用结果代码0时,在大多数情况下,在进程运行之后,结果代码为0表示"嘿,一切正常,这里没有问题".

  • 有理由说,如果它有效,没有什么可说的,如果它失败了,有很多非零返回码来表明它是什么样的失败. (3认同)

Sam*_*kes 12

我在一家拥有大量旧C代码的公司工作.一些共享头文件为TRUE和FALSE定义了自己的值,有些确实将TRUE设置为0,将FALSE设置为1.这导致了"真相之战":

/* like my constants better */
#undef TRUE
#define TRUE 1

#undef FALSE
#define FALSE 0
Run Code Online (Sandbox Code Playgroud)


zig*_*don 8

如果没有别的,bash shell仍然使用0表示true,将1表示为false.