我正在使用一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_BITIS 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 次 |
| 最近记录: |