1

在位操作方面,我是 C++ 的新手和完整的新手(我只知道基础知识),并且我正在从事一个项目,我需要将文档的状态保留在位域中。

简而言之:我想在无条件删除 flag2 的同时保留 flag1 的最后状态。我现在拥有的是这样的:

位域 |= flag1; 位域 &= ~flag2;

问题是:有没有办法在一个语句中执行它?

就我而言,我真的不能像这样切换它们:

位域 ^= (flag1|flag2)

这是显而易见的答案,但问题是有时设置了标志1,有时未设置,我想保留它,因为我在删除标志2时从最后一个函数调用中收到它。

谢谢你的帮助!

4

1 回答 1

2

你显然可以做

 bitfield = (bitfield | flag1) & ~flag2;

你可以使用逗号运算符,例如

 (bitfield |= flag1), (bitfield &= ~flag2);
于 2012-11-05T22:09:24.347 回答