【问题标题】:Size of int data type in 16 bit vs 32 bit machine in C [duplicate]C中16位与32位机器中int数据类型的大小[重复]
【发布时间】:2018-03-10 21:32:08
【问题描述】:

为什么 int 数据类型的大小在 16 位32 位 架构中不同,而 其他原始数据类型 在两种架构中具有相同的大小?

【问题讨论】:

  • 所有预定义整数类型的大小都是实现定义的。你问的是什么具体的实现?
  • 标准保证了事物的一些最小尺寸,但据我所知char 是唯一有保证上限的类型。
  • 谁告诉你“其他原始数据类型在两种架构中具有相同的大小”?许多架构都有32 or 64-bit long。许多人可能有8, 9, 16, 24 or 32-bit char。 C 标准不要求任何类型的固定大小
  • @MadPhysicist char 没有上限。当char 的范围==int 的范围时,问题确实会出现。
  • @chux。我没有意识到这一点。我认为 char 总是保证是一个字节。

标签: c primitive-types


【解决方案1】:

常见的普通整数类型(intlongshort 等)的大小不受 C 标准的限制,唯一的要求是它们具有最小容量以及它们的相对大小遵循等于或更好的规则(例如,long至少int一样大)。

这是因为 (1) 最初的实现只是简单地使用了架构中最自然的大小; (2) 标准化委员会的最初任务是编纂现有实践,而不是发明一种语言。

如果您想要固定大小的整数类型,请使用intN_t 样式的类型,例如int16_tuint32_t。这些正是为此目的而引入的。

【讨论】:

  • equal-or-better -- 表示越大越好。我明白了~编辑当你最终回答“为什么”时,点赞。
猜你喜欢
  • 2011-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-24
  • 2015-06-19
相关资源
最近更新 更多