64应该是sizeof(int)
可能重复:
int大小,long等等
int的大小是否取决于编译器和/或处理器?
什么决定一个整数的大小?
我使用的是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 bytesn", (int) sizeof(int));
return 0;
}
如果我运行一个16-
, 32-
和64-
位的机器,那么不就意味着一个规模integer
为16-
, 32-
和64-
分别位?
在我的机器中,我发现WORD_BIT
是32
。 在64-bit
机器上它不应该是64
吗?
$ getconf WORD_BIT
32
$
而且,在上述情况下sizeof(int)
不应该是64-bits
( 8 bytes
)吗?
不一定是; “64位机器”可能意味着很多事情,但通常意味着CPU具有很大的寄存器。 sizeof的类型由编译器决定,它不必与实际硬件有任何关系(尽管它通常是这样)。 实际上,同一台机器上的不同编译器可以具有不同的值。
在任何64位C / C ++编译器中,指针的大小应为8字节,但不一定是int大小。
不是真的。 为了向后兼容,它是32位。
如果你想要64位,你需要long
, size_t
或int64_t