在SO上有很多这样的问题所以我为这个额外的问题道歉。
stdbool.h
定义了这个:
#define true (1)
#define false (0)
但是,我在错误的代码中看到了许多其他声明,例如
#define true (0xFF)
#define false (!true)
甚至更糟
#define true (0xAAAAAAAA)
#define false (~true)
在真实的上下文中,我们可以想象一个变量int istrue
在错误的C程序中的某处使用:
istrue = 1;
因为我看到的代码非常难看,所以我不能假设我不会看到以下内容:
if (istrue == 1)
这样我就可以避免用istrue = 1
替换istrue = true
。
所以我的问题是:
在C中,对于任何C编译器,true
始终等于1
且false
总是等于0
,并且这种假设在任何情况下都应该始终有效吗?