int main() {
int a;
printf("%d",sizeof(a));
getchar();
}//输出来的是4啊,我的电脑Win8 64位啊。
sizeof是编译时确定,由编译时的编译参数确定。
64位的处理器也可以用32位表示内存。
就像在64位平台可以编译和运行32位的程序。
所以出来4也没正常。出来8也不奇怪
系统64位,程序可以是32位的啊,两者是独立的。
配置 64 位的程序 (Visual C++) https://msdn.microsoft.com/zh-cn/library/h2k70f3s.aspx
int类型在64位上还是4个字节长度,所以sizeof还是32
longlong是8字节,你可以试试,它会变成64
Ubuntu 64位:
运行结果:
每个编译器规定是多少就是多少,和你的计算机是64位的没关系。
好比你用32bit操作系统Windows XP,运行turbo C编译程序,那int还是16位的。
这个问题,不能太刻板,一般都是会向下兼容的
因为 sizeof 得到的值是多少
是由**编译器**决定 而不是由_操作系统_决定
你被网上的胡说八道误导了