我有这段代码
int a = 1; while(1) { a<<=1; cout<<a<<endl; }
在输出中,我得到了
. . 536870912 1073741824 -2147483648 0 0
为什么我没有达到INT_MAX?除此之外真正发生了什么?
解决方法
@H_502_13@ 你有一个有符号的int,所以数字是二进制补码.这就是发生的事情00..01 = 1 00..10 = 2 [...] 01..00 = 1073741824 10..00 = -2147483648 // Highest bit to one means -01..11 - 1 = -(2^31) 00..00 = 0
你无法达到INT_MAX,最多你将有2 ^ 30.