[英]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.