收起
C++中默认的整型是有符号int类型,int类型占4个字节共32位,其中最高位是符号位,如果最高位是1,则表示负数。1<<31的结果是0x80000000, 其中最高位为1,数值为负数,负数是按补码形式存储的,其对应的数值是取反码加1,即-(0x7FFFFFFF + 1)=-2147483648
int
1<<31
0x80000000
-(0x7FFFFFFF + 1)=-2147483648
报告相同问题?