对于位操作(我只了解基础知识),我是C++的新手,还是一本完整的newb,并且我正在从事一个需要在位域中保持文档状态的项目。
简而言之:我想保留flag1的最后状态,同时无条件删除flag2。
我目前所拥有的是这样的:
位域| = flag1;位域&=〜flag2;
问题是:有没有一种方法可以在一个语句中执行该操作?
就我而言,我无法像这样真正切换它们:
位字段^ =(flag1 | flag2)
这是一个显而易见的答案,但是问题是,有时设置了flag1,有时又没有设置flag1,我想保留它,因为我从上一个函数调用中收到了它,同时删除了flag2。
谢谢你的帮助!
最佳答案
你显然可以做
bitfield = (bitfield | flag1) & ~flag2;
您可以使用comma operator,例如
(bitfield |= flag1), (bitfield &= ~flag2);