在64位计算机上应该是sizeof(int)应该是什么?

时间:2012-04-17 18:51:10

标签: c++ c sizeof

  

可能重复:
  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_BIT32机器上不应该是64吗?

64-bit

而且,在上述情况下,$ getconf WORD_BIT 32 $ 不应该是sizeof(int)64-bits)吗?

4 个答案:

答案 0 :(得分:59)

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

答案 1 :(得分:45)

不必; &#34; 64位机器&#34;可能意味着很多东西,但通常意味着CPU的寄存器很大。类型的大小由编译器确定,编译器不必与实际硬件有任何关系(尽管通常如此);实际上,同一台机器上的不同编译器可以有不同的值。

答案 2 :(得分:23)

不是真的。为了向后兼容,它是32位 如果您想要64位,则可以longsize_tint64_t

答案 3 :(得分:8)

在C ++中,未明确指定int的大小。它只是告诉您它必须至少是short int的大小,它必须至少与signed char一样大。虽然sizeof(char)定义为1,但未明确指定char的位大小。如果需要64位int,则C ++ 11至少指定long long 64位。