这只发生在64位系统上。
#include <iostream>
void printBits(unsigned long code) {
long bit = (sizeof(code) * 8) - 1;
std::cout << code << std::endl;
while (bit >= 0) {
bool value = code & (1 << bit--);
std::cout << value;
}
std::cout << std::endl;
}
int main() {
printBits(12345);
return 0;
}
这是64位系统的输出(重复两次);
0000000000000000001100000011100100000000000000000011000000111001
这是用-m32
编译的输出(正确);
00000000000000000011000000111001
这是什么原因以及如何纠正?