[英]What's the real size of `size_t`, `uintptr_t`, `intptr_t` and `ptrdiff_t` type on 16-bit systems using segmented addressing mode?
好吧,C 编程语言中定义的size_t
、 uintptr_t
、 intptr_t
和ptrdiff_t
类型真的让我感到困惑。
我注意到在使用flat memory mode 的32 位系统上,上述四种类型的实际大小是:
sizeof(size_t) = sizeof(uintptr_t) = sizeof(intptr_t) = sizeof(ptrdiff_t) = 4
而在使用flat memory 模式的64 位系统上,上述四种类型的实际大小为:
sizeof(size_t) = sizeof(uintptr_t) = sizeof(intptr_t) = sizeof(ptrdiff_t) = 8
但是,我仍然对使用分段寻址模式的16 位系统上这四种类型的实际大小感到好奇。
根据Windows 3.1x ,Windows 3.1x 是一系列 16 位操作系统。 但是我找不到合适的 C 语言编译器来测试和验证真正的答案。
这至少可能取决于您使用的编译器。
作为16位时代的一个数据点,Borland Turbo C++ 3.0手册是这样说的:
sizeof结果的整数类型是size_t ,在 stddef.h 中定义为unsigned int 。
(强调原文。)
unsigned int
的大小为 16 位,与内存模型无关。
(您询问的其他类型都不存在,或者,如果存在,则此特定编译器不支持。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.