Itz*_*984 27 c c++ int 64-bit sizeof
我只是想知道我怎么知道我的笔记本电脑是64位还是32位机器.(这是64).
所以,我考虑过打印以下内容:
int main()
{
printf("%d",sizeof(int));
}
Run Code Online (Sandbox Code Playgroud)
结果是4,这看起来很奇怪(因为它是64位机器)
但是,当我打印这个:
int main()
{
printf("%d",sizeof(int*));
}
Run Code Online (Sandbox Code Playgroud)
结果是8,这更有意义.
问题是:
由于我使用的是64位机器,因此int等原始类型不应该使用8个字节
(64位)和那个sizeof int应该是8?为什么不是这样?
为什么int*大小是8?
这里有点困惑,
所以,提前谢谢.
Sca*_*nth 25
不,sizeof(int)是实现定义的,通常是4个字节.
另一方面,为了处理超过4GB的内存(32位系统可以执行),您需要指针为8字节宽.int*只是将地址保存到"内存中的某个地方",并且只能使用32位来处理超过4GB的内存.
Rah*_*thi 16
在任何64位C/C++编译器上,指针的大小应为8字节,但对于int的大小则不一样.
在维基有一个很好的解释:
在64位机器上用于C和C派生语言的许多编程环境中,"int"变量仍然是32位宽,但长整数和指针是64位宽.这些被描述为具有LP64数据模型.另一个替代方案是ILP64数据模型,其中所有三种数据类型都是64位宽,甚至是SILP64,其中"短"整数也是64位宽.[引证需要]但是,在大多数情况下,所需的修改相对较小且简单,并且可以简单地为新环境重新编译许多编写良好的程序而无需更改.另一种替代方案是LLP64模型,它通过将int和long保留为32位来保持与32位代码的兼容性."LL"指的是"长整数"类型,在所有平台上至少为64位,包括32位环境.
| 归档时间: |
|
| 查看次数: |
69607 次 |
| 最近记录: |