gpt4 book ai didi

objective-c - 如何使用带有位标志的枚举

转载 作者:太空狗 更新时间:2023-10-30 03:11:12 26 4
gpt4 key购买 nike

我有一个使用位标志的枚举声明,但我不知道如何使用它。

enum 
{
kWhite = 0,
kBlue = 1 << 0,
kRed = 1 << 1,
kYellow = 1 << 2,
kBrown = 1 << 3,
};
typedef char ColorType;

我想在一个 colorType 中存储多种颜色 我应该OR 将这些位放在一起吗?

ColorType pinkColor = kWhite | kRed;

但是假设我想检查 pinkColor 是否包含 kRed,我该怎么做呢?

有人愿意使用提供的 ColorType 示例给我一个示例吗?

最佳答案

是的,使用按位或(|)来设置多个标志:

ColorType pinkColor = kWhite | kRed;

然后使用按位与(&)来测试是否设置了标志:

if ( pinkColor & kRed )
{
// do something
}

& 的结果只有在 两个 操作数中设置相同的位时才会设置任何位。由于 kRed 中唯一的位是位 1,如果其他操作数也没有设置该位,结果将为 0。

如果您需要获取特定标志是否设置为 BOOL 而不是立即在 if 条件下测试它,请比较按位 AND 的结果测试位:

BOOL hasRed = ((pinkColor & kRed) == kRed);

关于objective-c - 如何使用带有位标志的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3524362/

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