我在c ++方面有点新鲜,对于位操作(我只知道基础知识)而言我是一个完整的新手,我正在开发一个项目,我需要将文档的状态保持在一个位域
简而言之:我想在无条件删除flag2的同时保留flag1的最后一个状态。 我现在所拥有的是这样的:
bitfield |= flag1; bitfield &= ~flag2;
问题是:有没有办法在一个语句中执行该操作?
在我的情况下,我真的不能像这样切换它们:
bitfield ^= (flag1|flag2)
这是明显的答案浮现在脑海中,但问题是flag1有时会被设置,有时它不是,我想保留它,因为我在删除flag2时从最后一个函数调用中收到它。
感谢您的帮助!
答案 0 :(得分:2)
你显然可以做到
bitfield = (bitfield | flag1) & ~flag2;
您可以使用comma operator,例如
(bitfield |= flag1), (bitfield &= ~flag2);