【问题标题】:Representation of Long Integers [duplicate]长整数的表示[重复]
【发布时间】:2011-02-18 00:04:43
【问题描述】:

可能重复:
What is the difference between an int and a long in C++?

#include <iostream>

int main()
{
    std::cout << sizeof(int) << std::endl;
    std::cout << sizeof(long int) << std::endl;
}

输出:

4
4

这怎么可能? long int 的大小不应该比int 大吗?

【问题讨论】:

    标签: c++ types size


    【解决方案1】:

    您的保证是:

    sizeof(int) <= sizeof(long)
    
    sizeof(int)   * CHAR_BITS >= 16
    sizeof(long)  * CHAR_BITS >= 32
    CHAR_BITS                 >= 8
    

    所有这些条件都满足:

    sizeof(int)  == 4
    sizeof(long) == 4
    

    【讨论】:

      【解决方案2】:

      C++ 语言从不保证或要求long intint更大。该语言唯一有希望的是long int不小于int。在许多流行的实现中,long int 的大小与int 相同。

      【讨论】:

        【解决方案3】:

        这取决于语言和平台。在 ISO/ANSI C 中,例如 long integer 类型在 64 位系统 Unix 中为 8 个字节,在其他操作系统/平台中为 4 个字节。

        【讨论】:

          【解决方案4】:

          没有。在 C 标准下,intshort int 的大小相同,intlong int 的大小相同,intlong int 或 @ 的大小不同是有效的987654327@,甚至三个都一样大小。在 16 位机器上,sizeof(int) == sizeof(short int) == 2 和 sizeof(long int) == 4 很常见,但在 32 位机器上最常见的排列是 sizeof(int) == sizeof(long int) == 4和 sizeof(short int) == 2。在 64 位机器上,您可能会发现 sizeof(short int) == 2、sizeof(int) == 4 和 sizeof(long int) == 8。

          【讨论】:

            【解决方案5】:

            http://bytes.com/topic/c/answers/163333-sizeof-int-sizeof-long-int

            没有什么是错的。数据类型的大小通常取决于硬件(char 除外,它始终为 1 个寄存器宽)。在 gcc/Unix 中,int 和 long int 都需要 4 个字节。您也可以尝试 sizeof(long long int) 并查看结果和 sizeof(short int)。

            【讨论】:

            • 为什么它们在 Unix 上需要 4 个字节?
            猜你喜欢
            • 2015-06-01
            • 1970-01-01
            • 1970-01-01
            • 2017-12-06
            • 1970-01-01
            • 1970-01-01
            • 2013-05-30
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多