是真的== 1&& false == 0在C中总是如此?

时间:2015-05-19 12:22:05

标签: c

在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始终等于1false总是等于0,并且这种假设在任何情况下都应该始终有效吗?

0 个答案:

没有答案