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/