首页 文章

为什么short / int / long中有一个额外的整数类型?

提问于
浏览
6

直到最近,我认为'long'与'int'是一回事,因为历史原因和台式机处理器都至少有32位(并且只有那种“欺骗”才有麻烦,因为它只在32位机器上开发) .

阅读this,我发现,事实上,C标准将int类型定义为 at least 为int16,而'long'应该至少为int32 .

实际上在列表中

  • 短符号整数类型 . 能够至少包含[-32767,32767]范围

  • 基本有符号整数类型 . 能够至少包含[-32767,32767]范围;

  • 长签名整数类型 . 能够至少包含[-2147483647,2147483647]范围

  • 长long有符号整数类型 . 能够至少包含[-9223372036854775807,9223372036854775807]范围;

总是存在非空交叉点,因此无论编译器和平台选择何种实现,都是重复的 .

为什么标准委员会在char / short / int / long(或int_k,int_2k,int_4k,int_8k)之类的内容中引入了额外的类型?

这是出于历史原因,例如,gcc x.x将int实现为32位而另一个编译器将其实现为16,或者是否存在我缺少的真正技术原因?

1 回答

  • 6

    中心点是 int/unsigned 不仅仅是来自 char, short,int, long, long long 阶梯的整数大小的另一步 . int 很特别 . 它是 the 大小,所有较窄的类型都提升到,因此通常在给定的处理器上工作"best" . 所以 int 匹配 shortlong 或者在 short/long 之间明显地楔入是高度依赖平台的 .

    C旨在适应各种处理器 . 鉴于C是40岁,证明了成功的战略 .

相关问题