【发布时间】:2014-07-31 08:44:21
【问题描述】:
我一直在阅读K&R 的《C 编程语言》一书,并遇到了这个问题。
当涉及无符号操作数时,转换规则更加复杂。问题 是有符号值和无符号值之间的比较是机器相关的,因为 它们取决于各种整数类型的大小。例如,假设 int 为 16 位,long 为 32 位。然后-1L ,因为1U,这是一个无符号整数,被提升为一个有符号长整数。但是 -1L > 1UL 因为 -1L 被提升为 unsigned long 从而出现 是一个很大的正数。
从我开始使用 C 开始,我对这个 Unsigned 和 Signed 值没有什么困难。谁能解释一下无符号值如何转换为有符号值,反之亦然。
【问题讨论】:
-
+1 有详细解释的权威链接来了!我没有。虽然 K&R 文本对我来说非常有意义,但我知道它是如何让初学者感到困惑的。
-
如果您正在寻找有符号值与无符号值的解释,那么您绝对可以在任何 C 介绍中找到它。我不太确定这里的问题是什么……
标签: c