【发布时间】:2012-07-27 12:30:47
【问题描述】:
我很难掌握 C 中的数据类型。我正在阅读一本 C 书籍,其中一个挑战是 short 可以存储的最大和最小数字是多少。
使用sizeof(short); 我可以看到一个short 消耗2 个字节。这意味着它是 16 位,这意味着两个数字,因为存储数字的二进制表示需要 8 位。例如,9 将是00111001,它会填满一位。那么无符号的不是0到99,有符号的不是-9到9吗?
我知道我错了,但我不知道为什么。它说here 签名的最大值为 (-)32,767,未签名的最大值为 65,535。
short int,2 字节,16 位,-32,768 -> +32,767 范围 (16kb)
【问题讨论】:
-
16 位意味着您有 16 个可以打开和关闭的开关。不同开关模式的总数为2^16,即65536个不同的状态。
-
只是出于好奇,标准允许的范围是多少?
-
@Antimony 请参阅 Richard J. Ross III 的答案中的链接:{SHRT_MAX} 短类型的最大值。最低可接受值:+32 767
-
请记住,即使 65536 = 2^16,根据limits.h 最大限制为65535,因为65536 被视为溢出