簡體   English   中英

為什么C標准提供不定尺寸的類型(int,long long,char與int32_t,int64_t,uint8_t等)?

[英]Why does the C standard provide unsized types (int, long long, char vs. int32_t, int64_t, uint8_t etc.)?

為什么不是stdint.h 標准的內容,當它被包含在標准(無INT無短路無浮動,但int32_t和int16_t,float32_t等)? 模棱兩可的字體大小提供/提供了什么優勢?

在Objective-C中,為什么決定在不同平台上CGFloatNSIntegerNSUInteger具有不同的大小?

在設計C時,有些計算機具有不同的字長。 不僅是8的倍數,還包括其他大小,例如PDP-7上的18位字大小。 因此,有時一個int是16位,但也許是18位或32位,或完全是其他大小。 在Cray-1上, int為64位。 結果, int表示“對於此計算機而言方便的任何事物,但至少16位”。

那是大約四十年前。 計算機已經改變,所以它當然現在看起來很奇怪。

NSInteger用於表示計算機的字長,因為在32位系統上要求數組的第50億個元素沒有意義,而在64位系統上則要求數組的十億分之一。

我不能說為什么CGFloat是64位系統上的double 那使我感到困惑。

C旨在從嵌入式設備,手機通過便攜式設備移動到桌面,主機和其他方面。 它們沒有相同的基本類型,例如,后者可能具有uint128_t ,而其他類型則沒有。 在某些情況下,編寫具有固定寬度類型的代碼將嚴重限制可移植性。

這就是為什么偏愛你應該既不用uintX_t也不intlong等,但語義的typedef如size_tptrdiff_t 這些確實是使您的代碼可移植的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM