【发布时间】:2015-10-21 02:27:59
【问题描述】:
在 Intel 文档中,我读到对于 Intel x86 64 位机器,C 数据类型“long”的大小为 8 字节。 但是,当我在具有 intel(R) core(TM)i3 - 64 位处理器的计算机上运行这个简单的代码时:
printf("size of long, is %d", sizeof(long));
控制台输出是 4(而不是 8)!任何人都可以解释这种差异或相同的原因。 谢谢
【问题讨论】:
-
安装了哪个操作系统,是32位还是64位操作系统。
-
你用的是什么编译器?
-
什么编译器和哪个版本? 32位还是64位?
-
心理调试:你在 Windows 上。微软的
long是 32 位的,即使在 64 位版本上也是如此,因为愚蠢的尝试保持兼容性,所以你必须使用long long。 -
size_t的格式说明符错误。正确的是%zu。您可能会调用未定义的行为,除非您使用的是 32 位操作系统。
标签: c