对于位操作(我只了解基础知识),我是C++的新手,还是一本完整的newb,并且我正在从事一个需要在位域中保持文档状态的项目。

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

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

问题是:有没有一种方法可以在一个语句中执行该操作?

就我而言,我无法像这样真正切换它们:

位字段^ =(flag1 | flag2)

这是一个显而易见的答案,但是问题是,有时设置了flag1,有时又没有设置flag1,我想保留它,因为我从上一个函数调用中收到了它,同时删除了flag2。

谢谢你的帮助!

最佳答案

你显然可以做

 bitfield = (bitfield | flag1) & ~flag2;

您可以使用comma operator,例如
 (bitfield |= flag1), (bitfield &= ~flag2);

10-08 18:08