c++ - C++中的按位设置

标签 c++ c

enum AccessSource
        {
            AccessSourceNull = 0x00000001,
            AccessSourceSec = 0x00000002,
            AccessSourceIpo = 0x00000004,
            AccessSourceSSA = 0x00000008,
            AccessSourceUpgrade = 0x00000010,
            AccessSourceDelta = 0x00000020,
            AccessSourcePhoneM = 0x00000040,
            AccessSourceSoft = 0x00000080,
            AccessSourceCR = 0x00000100,
            AccessSourceA = 0x00000200,
            AccessSourceE = 0x00000400,
            AccessSourceAll = 0xFFFFFFFF
        };

AccessSourceAll 的值是多少??是-1吗?还是最大值? 我有一个参数 ULONG x ,其默认值为 AccessSourceAll(这意味着访问所有)。如何仅删除 AccessSourceE 的访问权限? 如何重新添加AccessSourceE的访问权限?

如果我在 x 中有一个特定的值,那么我如何知道是否设置了 AccessSourceE?

最佳答案

AccessSourceAll 的值是 (int)0xFFFFFFFF 因为枚举在 C 中是 int 类型。

未设置只是 AccessSourceE 使用:

x & ~AccessSourceE  // to assign: x &= ~AccessSourceE;

添加,使用

x | AccessSourceE  // to assign: x |= AccessSourceE;

测试,

if (x & AccessSourceE) { ... }

关于c++ - C++中的按位设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2577934/

相关文章:

c++ - 将虚函数放入一个族中

c - 在C中读取带有非英文字符的文本文件

c - 插入和修改 ListView 项目

C、杀死所有进程

c++ - 如何获取 Ascii 格式 llvm 的指针类型?

c++ - 尝试与 OpenMP 并行处理链表数据

c++ - lambda 函数与仿函数

c - C 中列表的第一个元素不正确(linux/list.h)

c - SO_REUSEADDR 可以使用相同地址的套接字是否有限制?

c++ - 串行 channel 上的 boost::asio::async_write 问题