gpt4 book ai didi

c - 如何处理 Tribools

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:03 25 4
gpt4 key购买 nike

在 C 中,true 是任何不为 0 的东西。(但我们经常使用枚举来定义状态的值)。因此,要进行真实性测试,我们可以执行以下操作:

typedef enum
{
FALSE,
TRUE
} BOOL;

// Some function
BOOL n = isTrue();

if (n)
{
// Do something
}

有一些争论,但我和其他人更喜欢:

if (n == TRUE)
{
// Do something
}

但如果由于某种原因 isTrue() 函数返回的值不是 1,则后者不起作用,true 被视为 false。

我一直在进行代码审查,标记第一种方法应该是这样做的方法。但是我突然意识到,有时我们需要在未设置值时使用第三状态的想法。但是是否有可能在 C 中执行此操作并且仍然以第一种方式进行 bool 比较,因为如果我们将任何其他值分配给这个“NULL”值,那么它仍然会记录为真

最佳答案

没有。您将需要一个明确的比较。为了清楚起见,我建议使用 enum 类型:

typedef enum {
FALSE = 0,
TRUE = 1,
FILENOTFOUND = 2
} truth;

这导致相当干净的代码结构:

truth n;

// ...

switch (n) {
case FALSE: // Blah
case TRUE: // Blah
case FILENOTFOUND: // Blah
}

关于c - 如何处理 Tribools,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10397039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com