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

objective-c – 如何使用带位标志的枚举,第1张

概述我有一个枚举声明使用位标志,我不能精确地找出如何使用这个。 enum { kWhite = 0, kBlue = 1 << 0, kRed = 1 << 1, kYellow = 1 << 2, kBrown = 1 << 3,};typedef char ColorType; 我想要存储多个颜色在一个colorType我应该OR位一起? Colo 我有一个枚举声明使用位标志,我不能精确地找出如何使用这个。

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示例给我一个例子?

解决方法 是,使用按位OR(|)设置多个标志:

colorType pinkcolor = kWhite | kRed;

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

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

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

如果需要获取某个特定标志是否设置为BOol而不是立即在if条件中测试,请将按位AND的结果与测试位进行比较:

BOol hasRed = ((pinkcolor & kRed) == kRed);
总结

以上是内存溢出为你收集整理的objective-c – 如何使用带位标志的枚举全部内容,希望文章能够帮你解决objective-c – 如何使用带位标志的枚举所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1042373.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存