在实际使用与运算的时候遇到了下面的错误:
int _tmain(int argc, _TCHAR* argv[])
{
int tmp = 915;
int e = 1;
for (int i = 0; i < 12; i++)
{
if (tmp & e == e)
std::cout << true << std::endl;
else
std::cout << false << std::endl;
e = e << 1;
}
return 0;
}
程序总是跳入第8行,即if总是判断为正确。
错误原因为:与运算(&)的优先级低于等于运算(==),所以程序总是先计算右边的等于(==)。
修改如下:
if ((tmp & e) == e)