答案 0 :(得分:5)
让我们看看计算机如何存储值b:
5
为00000101
,因此-5
为11111011
,因此,当您将其转换为unsigned char
时,它将变为某个带有值{{1}的正数在二进制文件中,它大于11111011
那就是00000101
小于a = 00000101
的原因(0表示错误)。
答案 1 :(得分:2)
正在打印0
,因为a < b
和0
表示错误。 b
的类型为unsigned
,因此无法保留负数。因为-5
变为251
,它比5
更重要。
答案 2 :(得分:2)
让我们转到main
的第三行
c
取0
的值,因为a
不大于b
。这是因为在C中,零被认为是假,其他一切都是真的。
关于b
。大多数平台使用2s补码格式存储负整数。因此,当我们否定一个数字时,我们将所有位翻转并添加1.因此-5 unsigned变为0xfa,大于5。