c++ - 如果有人能向我解释这里发生了什么

标签 c++ function stack operators bit-manipulation

在我程序的某处我有一个函数

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 += 1x+1行为不同 - 当然,表达式的计算结果相同,但是 x仅对第一个版本进行更改。

关于c++ - 如果有人能向我解释这里发生了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13676316/

相关文章:

c - 栈中auto变量占用的内存空间是多少

c++ - 调试断言失败 : _CrtIsValidHeapPointer(block)

c++ - 当 cv::minMaxLoc 返回点 (-1, -1) 作为最小和最大位置时,这意味着什么?

javascript - Javascript 中循环初始化中定义的变量范围?

c - memcpy 溢出边界利用? (破坏堆栈)

c - 尝试用 C 语言创建堆栈 ADT。无法从中获得我想要的输出

c++ - 如何查找包含零作为元素的字符数组的长度

c++ - Bjarne Stroustrup 第 10.5 章示例

c++ - 在 C++ 中使用宏生成函数

C++ 从指针生成函数