我正在使用一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
$
Run Code Online (Sandbox Code Playgroud)
当我运行以下程序时,我得到了sizeof(int)
as 4-bytes
.
#include <stdio.h>
int main(void)
{
printf("sizeof(int) = %d bytes\n", (int) sizeof(int));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我运行一个16-
,32-
和64-
位机,那么不就意味着一个大小integer
为16-
,32-
并64-
分别位?
在我的机器上,我找到了WORD_BIT
IS 32
.它不应该64
在64-bit
机器上吗?
$ getconf WORD_BIT
32
$
Run Code Online (Sandbox Code Playgroud)
并且,在上述情况下不应该是sizeof(int)
be 64-bits
(8 bytes
)吗?
Eug*_*ene 61
在任何64位C/C++编译器上,指针的大小应为8字节,但不一定是int的大小.
Sco*_*ter 47
不一定; "64位机器"可能意味着很多东西,但通常意味着CPU的寄存器很大.类型的大小由编译器确定,编译器不必与实际硬件有任何关系(尽管通常如此); 实际上,同一台机器上的不同编译器可以具有不同的值.
Dan*_*ani 24
并不是的.为了向后兼容,它是32位.
如果你想要64位long
,size_t
或者int64_t
在C++中,int
未明确指定大小.它只是告诉你它必须至少是大小short int
,它必须至少与大小一样大signed char
.char
尽管sizeof(char)定义为1,但也没有显式指定in位的大小.如果你想要64位int,C++ 11指定long long
至少为64位.
归档时间: |
|
查看次数: |
147190 次 |
最近记录: |