几个月前,我给自己买了一台带有 cpu intel i7-2630qm 和 64 位 Windows 的笔记本电脑。在这个系统下练习我的编程技巧时,我在整数大小方面遇到了一些差异,这让我认为这可能是由于我的新 64 位系统造成的。
我们来看一段代码。
C代码:
#include <stdio.h>
int main(void)
{
int num = 20;
printf("%d %lld\n" , num , num);
return 0;
}
问题:
1.) 我记得在拿到这台新笔记本电脑之前,这意味着当时我还在使用旧的 32 位系统,当我运行这段代码时,由于说明符,程序将打印整数20
,而旁边有一些随机数%lld
.
2.)但是当我使用我的新笔记本电脑时,这种现象不再发生,它会正确打印两个整数,即使我将变量更改num
为 type short
。
3.)它是在 64 位系统上,有新的整数提升,int
当它用作参数时会提升为 long long?或者当作为参数传递时它是否short
也可以提升long long
为 64 位的整数? ?
4.)除此之外,我对一件事很困惑,在 16 位系统上,int
将是 16 位,而在 32 位系统上将是 32 位。但为什么不变成 64-当它在 64 位时位?
==================================================== ================================= 插件:
1.)我在 IDE 上选择“控制台程序(64 位)”作为我的项目,同时使用我的新笔记本电脑,但在我的 32 位旧 PC 系统上选择“控制台程序”。
2.)我已经int
使用运算符检查了“控制台程序(64 位)”项目的大小sizeof
,它返回 32 位,但short
仍然保持 16 位。唯一的变化是long
类型,它是 64 位,long long
仍然保持它的通常的 64 位大小。