【发布时间】:2014-07-07 18:26:29
【问题描述】:
我正在尝试使用逻辑 AND 运算符,但出现了一些意外行为。
#include <iostream>
using namespace std;
int main() {
unsigned flags = 0;
cout << "flags = " << flags << endl;
for(int i=0; i<3; ++i) {
flags &= (1 << i);
cout << "Anding with " << (1 << i) << endl;
cout << "flags = " << flags << endl;
}
return 0;
}
实际输出:
flags = 0
Anding with 1
flags = 0
Anding with 2
flags = 0
Anding with 4
flags = 0
预期输出:
flags = 0
Anding with 1
flags = 1
Anding with 2
flags = 3
Anding with 4
flags = 7
请注意,我可以通过在我的程序中简单地将 & 替换为 + 来获得预期的输出。但我想知道我在这里做错了什么?
【问题讨论】:
-
&是 按位 而非逻辑“与”运算符。此外,根据您的预期输出,您似乎想要按位“或”(|)。
标签: c++ operators bitwise-operators logical-operators