基本数据类型的问题,求解

img


第一行划线部分是怎么得出来的?,不应该是直接输出那串数字吗?怎么变成-1了?

赋的值太大了,int类型最大只能放下2147483647
而n1是4294967295,即2^32-1(二进制下是32个1),超出了int最大范围。
输出-1是因为,这个值的存储的时候是以补码形式的,32个1,最高位是1,转会源码的时候是1000000...0001(30个0),最高位是符号位,为1,因此当做负数处理了,出去最高位右边的值是1,所以结果是-1