在C语言中,true == 1 && false == 0始终为真吗?

30 浏览
0 Comments

在C语言中,true == 1 && false == 0始终为真吗?

对于这种问题,SO上有很多类似的问题,所以我对这个问题再次道歉。

stdbool.h定义了以下内容:

#define true  (1)
#define false (0)

然而,我在糟糕的代码中看到过很多其他的声明,比如:

#define true  (0xFF)
#define false (!true)

甚至更糟糕的是:

#define true  (0xAAAAAAAA)
#define false (~true)

在一个真实的情境中,我们可以想象在一个糟糕的C程序中的某个地方使用了变量int istrue

istrue = 1;

由于我在看的代码相当丑陋,我不能假设我不会看到这样的代码:

if (istrue == 1)

这会让我不敢将istrue = 1替换为istrue = true

所以我的问题是:

在C语言中,true是否总是等于1false是否总是等于0,对于任何C编译器,这种假设是否始终有效?

0