cout<< 0xFFFFFFFF <<endl; 怎么输出俩结果
- C/C++ code
int main(){ cout<< (int)0xFFFFFFFF <<endl; cout<< 0xFFFFFFFF <<endl; return 0;}
[解决办法]
前者按int
后者按unsigned int
[解决办法]
一个是int方式输出,一个是unsigned int 方式输出,对于32bit的int能表示的整数范围为-2147483648到2147483647,而对于32bit的unsigned int(无符号整数)能表示的范围为0到4294967295。计算机只能处理二进制数,对于int的0xFFFFFFFF,对应二进制为32个1(1111 1111 1111 1111 1111 1111 1111 1111),其中最高位1为符号位,也就是其原码为(1111 1111 1111 1111 1111 1111 1111 1111),对应的补码为(1000 0000 0000 0000 0000 0000 0000 0000 0001),也就是-1,而对于没有符号位的unsigned int,其原码和补码均为(1111 1111 1111 1111 1111 1111 1111 1111),也就是2^32-1=4294967295
[解决办法]
你调用的是两个不同的函数