这个和你自己机器的位数、操作系统位数有关系,和编译器也有关系,要具体看,这种实际就是操作的位值,就相当于溢出,不同机器上的产生值不一样。具体就是所有数字全为1表示的十进制数值。
编程没有这么写的,这么写有很多编译器直接会打出警告。
这是因为你定义的数据是unsigned int类型,(无符号整型)
所以,unsigned i=-1,实际是i的值是 32位的4294967295,而不是你期望的-1.
因为x86体系的计算机,是采用补码表示数据的。
而-1的补码,恰好是2的32方-1=4294967295。
如果int的字长为4字节,-1就是0xFFFFFFFF,转为无符号的十进制数就是4294967295。