【问题标题】:Number of bits in an integer [duplicate]整数中的位数[重复]
【发布时间】:2013-10-15 01:49:35
【问题描述】:

C 中整数的位数取决于编译器和机器。这是什么意思? int 中的位数是否因不同的 C 编译器和不同的处理器架构而异?能说明一下是什么意思吗?

【问题讨论】:

  • 确实如此。
  • 这取决于不同的处理器架构,比如 32 位 CPU,有 4 个字节,或者 64 位 CPU,有 8 个字节......等等。
  • @OP 表示整数的大小。例如在 x86 sizeof(long) 是 4 而在 amd64 sizeof(long) 通常是 8。
  • 这是一个关于语言规则的(重复)问题,C,关于它的一种类型,int;不是关于人们制造容量更大的计算机,以便我们用户可以在其中存储更大的东西。请参阅重复问题中的this answer
  • 请自行回答作业或测试题。

标签: c compiler-construction


【解决方案1】:

这篇维基百科文章提供了一个很好的概述:http://en.wikipedia.org/wiki/Word_(data_type)

整数等类型在硬件中表示。硬件发生变化,某些类型的大小也会发生变化。类型中的位数越多,可以存储的数字就越大(对于整数)或更高的精度(对于浮点类型)。

有一些类型专门指定位数,例如int16

【讨论】:

  • 在没有解释的情况下投反对票不是很有建设性的。
  • 维基百科解释 C 中类型大小的地方是 en.wikipedia.org/wiki/C_data_types#Basic_types
  • 提问者要求解释大小可以不同的事实,不一定是列表。我认为我的链接对于这个问题更有用。
  • 我认为通过阅读语言本身的规则可以更好地理解语言中的类型规范。但是,阅读这两个链接当然会使 OP 受益。
【解决方案2】:

它的意思正是它所说的和你用你自己的话所说的。

例如,在某些编译器和某些平台上,int 是 32 位,而在其他编译器和平台上,int 是 64 位。

我记得很久以前我在 Commodore Amiga 上编程时,有两个不同制造商提供的两种不同的 C 编译器。在一个编译器上,int 是 16 位,而在另一个编译器上,int 是 32 位。

您可以使用sizeof 来确定@​​987654326@ 在您的编译器上的字节数。

【讨论】:

  • Manx (Aztec) 和 Lattice!
  • @JimBalter 没错!我有 Aztec C.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
  • 2011-11-17
  • 2021-08-18
  • 2018-12-29
  • 1970-01-01
  • 2021-07-01
相关资源
最近更新 更多