在32位平台和64位平台上,同一種數據類型可能有不同的數據長度:
| 類型 | 32位平台 | 64位平台 |
| char | 1 | 1 |
| short | 2 | 2 |
| int | 4 | 4 |
| long | 4 | 8 |
| long long | 8 | 8 |
| float | 4 | 4 |
| double | 8 | 8 |
| size_t | 4 | 8 |
| ssize_t | 4 | 8 |
看到沒,
從上面的結果可以看到不同,所以不要假定上表內顏色背景行的數據長度,因為它是會變化的。
因為系統的函數會返回上述的這些值,所以必須知道他們的大小並進行相應的防錯性轉換。而另外的情況,你需要跨不同平台固定數據長度數據類型的話,可以使用一些定長的數據類型,這樣子就不會混淆了,類似:
int8_t int16_t int32_t int64_t
uint8_t uint16_t uint32_t uint64_t
