可能重复:
size of int, long, etc
Does the size of an int depend on the compiler and/or processor?
What decides the sizeof an integer?
我正在使用64-bit
机器。
$ uname -m
x86_64
$ file /usr/bin/file
/usr/bin/file: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped
$
当我运行以下程序时,我将sizeof(int)
作为4-bytes
。
#include <stdio.h>
int main(void)
{
printf("sizeof(int) = %d bytes\n", (int) sizeof(int));
return 0;
}
如果我正在运行16-
,32-
和64-
位计算机,那么这并不意味着integer
的大小为{{1}分别是},16-
和32-
位?
在我的计算机中,我发现64-
为WORD_BIT
。 32
机器上不应该是64
吗?
64-bit
而且,在上述情况下,$ getconf WORD_BIT
32
$
不应该是sizeof(int)
(64-bits
)吗?
答案 0 :(得分:59)
指针的大小在任何64位C / C ++编译器上应为8字节,但不一定是int的大小。
答案 1 :(得分:45)
不必; &#34; 64位机器&#34;可能意味着很多东西,但通常意味着CPU的寄存器很大。类型的大小由编译器确定,编译器不必与实际硬件有任何关系(尽管通常如此);实际上,同一台机器上的不同编译器可以有不同的值。
答案 2 :(得分:23)
不是真的。为了向后兼容,它是32位
如果您想要64位,则可以long
,size_t
或int64_t
答案 3 :(得分:8)
在C ++中,未明确指定int
的大小。它只是告诉您它必须至少是short int
的大小,它必须至少与signed char
一样大。虽然sizeof(char)定义为1,但未明确指定char
的位大小。如果需要64位int,则C ++ 11至少指定long long
64位。