gpt4 book ai didi

c - 标志位设置,避免冲突,C

转载 作者:行者123 更新时间:2023-12-02 14:38:32 24 4
gpt4 key购买 nike

我有一个持有标志的整数,它具有一组现有的可能标志:

#define MAIL_ADDR_FROM  0x0001  /* address field contains the from address */
#define MAIL_ADDR_TO 0x0002 /* address field contains the to address */
#define MAIL_SEEN 0x0004 /* message has been read by the user */
#define MAIL_ATTACH 0x0008 /* message has an attachment */
#define MAIL_IMP_HIGH 0x0010 /* message is of high importance */
#define MAIL_IMP_LOW 0x0020 /* message is of low importance */
#define MAIL_FLAGGED 0x0040 /* message has been flagged */
#define MAIL_REPLIED 0x0080 /* message has been replied to */
#define MAIL_DRAFT 0x0100 /* message is a draft */
#define MAIL_NEW 0x0200 /* message is new */
#define MAIL_DELETED 0x8000 /* message is deleted */

我需要添加一个新的:

#define MAIL_SPAM       0x????  /* message is spam */ 

现有标志列表从 0x0200 一直跳到 0x8000 是否有原因?我的理解是,我的新标志的可用值为 0x0400、0x0800 和 0x1000-0x4000。我是否误解了这些位集的工作原理?

最佳答案

总而言之,你的理解很好。

我们只能猜测为什么MAIL_DELETED0x8000,而不是0x0400;我的猜测是,由于“已删除”标志的戏剧性,选择了最高位。

将新位引入其他人的位掩码中最棘手的部分是,您需要确保看起来未使用的位实际上未使用,并且它们始终以一致的方式初始化。

关于c - 标志位设置,避免冲突,C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8329400/

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