2025-11-08 06:25:22
unsigned int转成int就像把一个装满水的塑料瓶倒进玻璃杯里,水会从瓶口流出来但总量不变。具体操作分两步走:第一步把unsigned int的数值直接塞给int变量,第二步用printf函数像念咒语那样输出结果。比如unsigned int是255,转成int还是255;要是unsigned int是1000,转成int就变成1000。但要是unsigned int特别大比如,转成int就会变成-1,因为int只能装-到之间的数。
为什么会有这种变故呢?这得从计算机的存储原理说起。unsigned int用32位全存正数,最大能存。而int有1位存符号,剩下31位存数值,所以最大只能存。当把unsigned int转成int时,高位1位会变成符号位。比如unsigned int是0xFFFFFFFF(等于),转成int时高位1位变成1,所以显示为-1。打印时系统会自动判断符号位,如果是1就前面加个“-”字。就像把255存进8位容器没问题,但存进7位容器就会溢出变成-1,这跟容器大小有关。
本题链接: