在我程序的某处我有一个函数
for (int i = 0; i < 4; i++) if (!(mask & 1 << i))
{
string tmp = s;
b[i](tmp);
mask |= 1 << i;
generate(tmp, mask, count - 1);
}
但是,如果我改变了一个东西(大概)应该是一样的,代码就不再像它应该的那样了。
如果不是
mask |= 1 << i;
generate(tmp, mask, count - 1);
我写 generate(tmp, mask | (1 << i), count - 1)
最佳答案
这不是一回事。
mask |= 1 << i;
改变变量mask
, 而你的版本 - mask | (1 << i)
- 没有。
这就像在说 x += 1
和 x+1
行为不同 - 当然,表达式的计算结果相同,但是 x
仅对第一个版本进行更改。
关于c++ - 如果有人能向我解释这里发生了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13676316/