在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位。