可能重复:
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
吗?
答案 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}标准下有效int
与short int
的大小相同,int
的大小与long int
相同,int
不是long int
与short int
或sizeof(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)。