我遇到了一個行爲,我沒有期望在無符號整數上使用按位運算。我會切入我的榜樣。無符號int零位表示
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
?
http://en.cppreference.com/w/cpp/language/operator_precedence – 2014-08-31 06:47:42
[C++按位操作]的可能重複(http://stackoverflow.com/questions/14645473/c-bitwise-operations) – user2357112 2014-08-31 06:48:44