我正在看一本C书,作者提到了一段文字:
"if ch (a char variable) is a signed type, then storing 255 in the ch variable gives it the value -1
".
谁能详细说明一下吗?
假设8位char
s,这实际上是实现定义的行为。值 255 不能表示为带符号的 8 位整数。
然而,大多数实现只是存储位模式,对于 255 来说是0xFF
。通过二进制补码解释,作为有符号 8 位整数,这就是以下的位模式-1
。在更罕见的补码架构上,这将是负零或陷阱表示的位模式,带有符号和幅度,它将是-127
.
如果两个假设(符号性和 8 位char
s) 不成立,该值将是 1 255,因为 255 可表示为无符号 8 位整数或超过 8 位的有符号(或无符号)整数。
¹ 该标准保证CHAR_BIT
至少为 8,也可以更大。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)