代码之家  ›  专栏  ›  技术社区  ›  augustin

C++:默认的int长度是多少?

c++
  •  3
  • augustin  · 技术社区  · 14 年前

    我知道默认情况下,int是有符号的。但是它是短的还是长的?

    根据下一页中的“基本数据类型”表,int在默认情况下是长int(4字节)。 http://www.cplusplus.com/doc/tutorial/variables/

    它总是正确的,还是取决于操作系统(32位/64位)、编译器或其他东西?

    6 回复  |  直到 14 年前
        1
  •  13
  •   unwind    14 年前

    它取决于编译器实现者。安 int 应该是平台的最佳“本机”长度。这里的最佳本机通常是指目标处理器使用的最方便/高效/快速的大小。通常你可以期待 内景 与处理器的(整数)寄存器大小相同。

    正如其他人所指出的,编译器必须遵守关于各种整数类型大小的某些关系,因此实现者不能自由选择任何东西。例如, 内景 long ,等等。

    你经常谈论 programming models 与这些问题相关,例如,编译器可以根据所选模型选择使各种类型的大小不同。

        2
  •  11
  •   dan04    14 年前

    本标准仅要求:

    • int 不短于 short 不超过 long

    整数类型的确切大小取决于编译器。这个 标准是

    • char 是8位
    • 是16位
    • 内景 在16位系统上为16位,在32位和64位系统上为32位
    • 可以是32位或64位
        3
  •  1
  •   celavek    14 年前

        4
  •  1
  •   Kristopher Johnson    14 年前

    short int long int 至少是32位 int 将不小于 short 也不大于 long

        5
  •  1
  •   Jérôme Radix    14 年前

    这个 C++ Standard

    3.9.1, §2 :

    有五种带符号整数类型: “signed char”,“short int”,“int”, “long int”和“long long int”。在 和前面的一样多的存储空间 建议的自然尺寸 执行架构 提供整数类型以满足 特殊需要。

    (44)也就是说, 大到足以容纳 INT\u MIN和 <climits> .

    结论是:这取决于您正在使用的体系结构。任何其他的假设都是错误的。

        6
  •  1
  •   Community CDub    4 年前

    BJARNE的“C++编程语言”4.4美元

    与char一样,每个整数类型有三种形式:纯整数、有符号整数和无符号整数。此外,整数有三种大小:short int、plain int和long int。 长整型可以称为普通长整型。类似地,short是short int的同义词,unsigned表示unsigned int,signed表示signed int。

    同一本书的第4.6节规定

    C++对象的大小用字符大小的倍数来表示,因此根据定义,字符的大小是1。对象或类型的大小可以使用sizeof操作符获得

    (§6.2). 这就是保证 关于基本类型的大小:

    1<=sizeof(bool)<=sizeof(long)

    sizeof(float)<=sizeof(double)<=sizeof(long double)

    sizeof(N)<=sizeof(有符号N)<=sizeof(无符号N)

    其中N可以是char,short int,int, 或长整型。此外,它是 保证一个char至少有8个 长度至少为32位。一个字符可以容纳 机器的角色

    这清楚地表明 sizeof(int)是实现定义的 但保证最小32位

    C++ 03 $ 3.91/3

    存在相应的(但是 不同)无符号整数类型: 无符号字符,无符号短整型, 每一个都占据了 相同的存储量和 (3.9)作为 类型具有相同的对象 无符号整数类型。