【发布时间】:2017-07-06 12:22:13
【问题描述】:
std::bitset <1> a1;
std::bitset <1> a2;
a1 = std::bitset<1> (0);
a2 = std::bitset<1> (1);
std::bitset<1> b = (a1 ^= a2)
这会导致
b = 1
这很好,但也修改了a1,在异或运算后变为:
a1 = 1
为什么会这样? 在不创建 temp 变量的情况下如何避免这种情况?
【问题讨论】:
-
嗯,它应该修改
a1,因为你对a1 ^= a2所做的实际上等于a1 = a1 ^ a2。 -
使用
^而不是^=。 -
你确定
a2改变了吗? -
这不是问题,但代码确实有点旋转。无需创建您的 bitset 对象,然后从临时对象中分配给它们,只需使用适当的值初始化它们:
std::bitset<1> a1(0); std::bitset<1> a2(1);
标签: c++ xor operation std-bitset