【发布时间】:2014-08-31 06:45:46
【问题描述】:
在无符号整数上使用按位运算时,我遇到了一种我没想到的行为。我将直接进入我的示例。
unsigned int a = 0;
unsigned int b = 0;
std::printf("a & b: %u\n", a & b);
std::printf("a == b: %i\n", a == b);
std::printf("a & b == a: %i\n", a & b == a);
以上代码产生以下输出:
a & b: 0
a == b: 1
a & b == a: 0
最后一行让我感到困惑。 a & b == a 不应该评估为 true,因为 a & b == (unsigned int)0 和 a == (unsigned int)0?
【问题讨论】:
标签: c++ bit-manipulation unsigned