表示长整数

时间:2011-02-18 00:04:43

标签: c++ types size

  

可能重复:
  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吗?

5 个答案:

答案 0 :(得分:4)

您的保证是:

sizeof(int) <= sizeof(long)

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

所有这些条件都符合:

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

答案 1 :(得分:3)

C ++ langauge永远不会保证或要求long int 大于<{em>>而不是int。该语言唯一有用的是long int 不小于而不是int。在许多流行的实施中,long int的大小与int相同。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

没有。它在{C}标准下有效intshort int的大小相同,int的大小与long int相同,int不是long intshort intsizeof(int)相同,或者即使所有三个都具有相同的大小。在16位计算机上,sizeof(short int) == sizeof(long int) == 2和sizeof(int) == 4很常见,但32位计算机上最常见的排列是sizeof(long int) == sizeof(short int) == 4和sizeof(short int) == 2.在64位计算机上,您可能会发现sizeof(int) == 2,sizeof(long int) == 4和{{ 1}} == 8.

答案 4 :(得分:0)

请参阅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)。