【问题标题】:Why unsigned short int get promoted to unsigned int even when the sizes are same?为什么即使大小相同, unsigned short int 也会被提升为 unsigned int?
【发布时间】:2012-02-20 06:10:02
【问题描述】:

当我们对 unsigned short int 执行任何操作时,即使在两种数据类型具有相同大小的机器上,它也会被提升为 unsigned int。这种促销的目的是什么?它有什么帮助?不就是换个名字吗(因为两者大小一样)?

【问题讨论】:

  • 从 C 类型系统的角度来看,类型仍然不同,即使它们在您的特定平台上消耗相同数量的内存。
  • @Reuben 你能举个例子说明这对你有什么帮助吗?我们需要担心这样的转换吗?这会是一个潜在的错误吗?
  • 存在sizeof(unsigned short int) != sizeof(unsigned int)的现存平台/机器/操作系统
  • 那么我们可以说这样的转换永远不会对 sizeof(unsigned short int) == sizeof(unsigned int) 的机器产生任何影响
  • 你在什么操作系统上运行?那是唯一你在你的程序的整个未来都需要运行的操作系统吗?

标签: c


【解决方案1】:

粗略地说,因为这就是 Dennis Ritchie 在 1970 年代初第一次制定 C 规则时决定的方式(或者,至少首先制定支持 unsigned 整数类型的 C 规则,但那已经是因为short 被提升为int)。

【讨论】:

    【解决方案2】:

    ANSI C 委员会的最初任务是编纂现有实践,而不是创建一种新语言。

    C 标准在其通过 ANSI 和 ISO 的所有迭代中都非常重视向后兼容性。

    换句话说,它是那样做的,因为它总是那样做的:-)

    之所以进行推广,是因为标准适用于所有实现,包括大小不同的实现。

    但我不确定你在抱怨什么。类型相同大小的促销不太可能对性能产生影响。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-09
      • 2021-12-13
      • 2011-05-19
      • 2013-09-03
      相关资源
      最近更新 更多