我有一个同事认为TRUE过去被定义为0而其他所有值都是FALSE.我可以发誓我使用的每种语言,如果你甚至可以得到一个布尔值,那么FALSE的值是0.去过TRUE是0吗?如果是这样,我们何时切换?
你的同事感到困惑的0 /非0事件可能是指人们使用数值作为返回值表示成功,而不是真实(即在bash脚本和某些样式的C/C++中).
使用0 =成功可以更精确地指定失败原因(例如,1 =丢失文件,2 =丢失肢体,等等).
作为旁注:在Ruby中,唯一的错误值是nil和false.0为真,但与其他数字不同.0为真,因为它是对象0的实例.
它可能是在引用结果代码0时,在大多数情况下,在进程运行之后,结果代码为0表示"嘿,一切正常,这里没有问题".
我在一家拥有大量旧C代码的公司工作.一些共享头文件为TRUE和FALSE定义了自己的值,有些确实将TRUE设置为0,将FALSE设置为1.这导致了"真相之战":
/* like my constants better */ #undef TRUE #define TRUE 1 #undef FALSE #define FALSE 0
如果没有别的,bash shell仍然使用0表示true,将1表示为false.