在C语言中,true == 1 && false == 0始终为真吗?
- 论坛
- 在C语言中,true == 1 && false == 0始终为真吗?
30 浏览
在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
是否总是等于1
,false
是否总是等于0
,对于任何C编译器,这种假设是否始终有效?