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-位的机器,那么不就意味着一个规模integer16-32-64-分别位?

在我的机器中,我发现WORD_BIT32 。 在64-bit机器上它不应该是64吗?

$ getconf WORD_BIT
32
$ 

而且,在上述情况下sizeof(int)不应该是64-bits8 bytes )吗?


不一定是; “64位机器”可能意味着很多事情,但通常意味着CPU具有很大的寄存器。 sizeof的类型由编译器决定,它不必与实际硬件有任何关系(尽管它通常是这样)。 实际上,同一台机器上的不同编译器可以具有不同的值。


在任何64位C / C ++编译器中,指针的大小应为8字节,但不一定是int大小。


不是真的。 为了向后兼容,它是32位。
如果你想要64位,你需要longsize_tint64_t

链接地址: http://www.djcxy.com/p/40391.html

上一篇: What should be the sizeof(int) on a 64

下一篇: How to insert booleans into a bitfield in C89