gpt4 book ai didi

c - 有符号 int 范围混淆

转载 作者:行者123 更新时间:2023-11-30 18:20:00 25 4
gpt4 key购买 nike

这个问题可能非常基本,但我只是在经过几天的谷歌搜索以及对 C 中带符号整数的正确基本理解后才在这里发布。

其实有人说signed int有范围

  1. -32767到32767,其他人说它有范围
  2. -32768 至 32767

让我们有 int a=5 (有符号/让我们只考虑 1 个字节)

*a=5 的第一个表示形式表示为正数 00000101,a=-5 表示为 10000101(因此范围 -32767 到 32767 合理)(这里的 MSB/符号位是 1/0,数字将为正/负,其余(幅度位)不变)

*a=5的第2个表示为正数表示为00000101,a=-5表示为11111011(最高有效位被视为 -128,其余位被操纵以获得 -5)(因此范围 -32768 到 32767 是合理的)

所以我混淆了这两件事。我的疑问是 c 中的signed int 的实际范围是多少,1) 或2)

最佳答案

这取决于您的环境,通常int可以存储-2147483648到2147483647(如果它是32位长并且使用二进制补码),但C规范说int可以存储至少 -32767 到 32767。

引自N1256 5.2.4.2.1 整数类型的大小

Their implementation-defined values shall be equal or greater in magnitude (absolute value) to those shown, with the same sign.

— minimum value for an object of type int
INT_MIN -32767 // −(2 15 − 1)
— maximum value for an object of type int
INT_MAX +32767 // 2 15 − 1`

关于c - 有符号 int 范围混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35725455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com