这个问题大致是这样的,本来试图写一个产生低8位为1的掩码的语句: uint32_t mask = ~((uint8_t)0); ,结果发现算出的掩码是 0xffffffff 显然不符合预期,于是折腾检查了一番,写出对比程序如下: #include #include using namespace std; int main() { uint8_t z = 0; uint32_t x = ~(uint8_t)0; uint32_t y = (uint8_t)~0; cout << typeid(~(uint8_t)0).nam