C语言的VS2013基础问题

int main() {
int a;
printf("%d",sizeof(a));
getchar();
}//输出来的是4啊,我的电脑Win8 64位啊。

c

7个回答

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 得到的值是多少
是由**编译器**决定 而不是由_操作系统_决定
你被网上的胡说八道误导了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐