ANSI C规定在无符号整数和有符号整数之间进行强制类型转换时,位模式不应该改变。类型转换并未改变对象的位模式,改变的是位模式的解释方式。
有符号数转换为无符号数时,负数转换为大的正数(可以理解为原值加上2的n次方),而正数保持不变。 因为有符号数第一个比特位代表符号位,而无符号数首位是计入绝对值的,有符号数的最小值(负最小)转换后刚好就是有符号数最大值max的(max+1)*2-1。
无符号数转换为有符号数时,对于小的数将保持原值,对于大的数则转换为负数(可以理解为原值减去2的n次方)。
引用https://blog.youkuaiyun.com/Kelvin_Yan/article/details/49797627
ANSI C规定无符号整数和有符号整数强制类型转换时,位模式不变,改变的是解释方式。有符号数转无符号数,负数变正数,正数不变;无符号数转有符号数,小数不变,大数变负数。
5160

被折叠的 条评论
为什么被折叠?



