gpt4 book ai didi

c++ - 是否可以在一个语句中进行 2 个相反的位操作?

转载 作者:行者123 更新时间:2023-11-30 04:23:40 25 4
gpt4 key购买 nike

我是 C++ 的新手,在位操作方面完全是个新手(我只知道基础知识),我正在做一个项目,我需要在位域中保持文档的状态.

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

bitfield |= flag1; bitfield &= ~flag2;

问题是:有没有办法在一条语句中执行该操作?

在我的例子中,我真的不能像这样切换它们:

bitfield ^= (flag1|flag2)

这是我想到的明显答案,但问题是 flag1 有时已设置,有时未设置,我想保留它,因为我在删除 flag2 时从上次函数调用中收到它。

感谢您的帮助!

最佳答案

你显然可以做到

 bitfield = (bitfield | flag1) & ~flag2;

你可以使用 comma operator ,例如

 (bitfield |= flag1), (bitfield &= ~flag2);

关于c++ - 是否可以在一个语句中进行 2 个相反的位操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13241199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com