在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 bytes\n", (int) sizeof(int)); return 0; } 
 如果我运行的是16- 32- , 32-和64-位机器,那么这是不是说integer的大小分别是16-和64-位? 
 在我的机器上,我发现WORD_BIT是32 。 在64-bit机器上不应该是64 64-bit ? 
 $ getconf WORD_BIT 32 $ 
 而且,在上面的情况下sizeof(int)不应该是64-bits ( 8 bytes )吗? 
不一定是; “64位机器”可能意味着很多东西,但通常意味着CPU具有很大的寄存器。 一个types的大小是由编译器决定的,不需要与实际的硬件有任何关系(尽pipe通常是这样)。 实际上,同一台机器上的不同编译器可以有不同的值。
在任何64位C / C ++编译器中,指针的大小应为8字节,但不一定是int大小。
 不是真的。 为了向后兼容,它是32位的。 
 如果你想要64位,你有long , size_t或int64_t 
 在C ++中, int的大小没有明确指定。 它只是告诉你它必须至less是short int的大小,它必须至less与signed char一样大。 尽pipesizeof(char)被定义为1,但char的大小并没有明确指定。如果你想要一个64位的int,C ++ 11指定long long至less为64位。