在 C 中,任何不为 0 的都是真的。(但我们经常使用枚举来定义状态的值)。因此,要进行真实性测试,我们可以执行以下操作:
typedef enum
{
FALSE,
TRUE
} BOOL;
// Some function
BOOL n = isTrue();
if (n)
{
// Do something
}
有一些争论,但我和其他人更喜欢:
if (n == TRUE)
{
// Do something
}
但是,如果由于某种原因,该isTrue()
函数返回了一个非 1 的值来表示 true,那么后者就不起作用,并且 true 被视为 false。
我一直在通过代码审查标记第一种方式应该是这样做的方式。但是我突然意识到,有时我们需要在未设置值时使用第三种状态的概念。但是是否有可能在 C 中做到这一点并且仍然以第一种方式进行布尔比较,因为如果我们将任何其他值分配为这个“NULL”值,那么它仍然会记录为 true