【发布时间】:2013-06-30 03:17:18
【问题描述】:
当试图在 C 中存储高于 32,767 的短整数值时,为了看看会发生什么,我注意到打印到屏幕上的结果是我试图存储的数字 - 65,536。例如。如果我尝试将 65,536 存储在一个短变量中,则打印到屏幕上的数字为 0。如果我尝试存储 32,768,我将 -32,768 打印到屏幕上。如果我尝试存储 65,546 并将其打印到屏幕上,我得到 10。我想你明白了。为什么我会看到这些结果?
【问题讨论】:
-
short 是 2 个字节(通常,视情况而定)。 2 字节 = 16 位。第一个是符号,因此您最多可以存储 2^15 的值,然后才会翻转并变为负数。
-
(它实际上是有符号类型的未定义行为,尽管我从来不知道除了取模值之外还有什么实现)