我正在读一本C书,作者提到了一篇文章:
" if ch (a char variable) is a signed type, then storing 255 in the ch variable gives it the value -1".
任何人都可以详细说明吗?
Dan*_*her 10
假设8位chars,这实际上是实现定义的行为.值255不能表示为带符号的8位整数.
但是,大多数实现只是存储位模式,对于255是0xFF.使用二进制补码解释,作为带符号的8位整数,即位模式-1.在一个更罕见的"补充"架构中,这将是负零点或陷阱表示的位模式,具有符号和幅度,它将是-127.
如果两个假设中的任何一个(符号和8位chars)不成立,则该值将为¹255,因为255可表示为无符号8位整数或带有超过8位的有符号(或无符号)整数.
¹标准保证CHAR_BIT至少为8,可能更大.