2023年8月8日,周二上午
目錄
- 為什么會產生int8_t、uint8_t等這類數據類型
- int8_t、uint8_t等這類數據類型有什么用
- 頭文件
- int8_t、uint8_t等這類數據類型是怎么實現的
為什么會產生int8_t、uint8_t等這類數據類型
根本原因在于,C 語言標準只是規定了各個基本類型的最小字節長度,但并沒有指定它們的確切字節長度:
-
char 類型:?
char
?類型的最小大小為 1 字節,用來存儲字符的基本類型。 -
short 類型:?
short
?類型的最小大小為 2 字節,用來存儲短整數的基本類型。 -
int 類型:?
int
?類型的最小大小為 2 字節,用來存儲整數的基本類型。 -
long 類型:?
long
?類型的最小大小為 4 字節,用來存儲長整數的基本類型。 -
long long 類型:?
long long
?類型的最小大小為 8 字節,用來存儲超長整數的基本類型。
比如,
在64位Windows上運行C語言的sizeof(long)得到的是4
在64位Linux上運行C語言的sizeof(long)得到的是8
雖然不一樣,但它們都不會小于4字節
再比如,
在某些平臺上運行C語言的sizeof(int)得到的是2
在64位和32位Windows上運行C語言的sizeof(int)得到的是4
雖然不一樣,但它們都不會小于2字節
總而言之,C語言現有的基本數據類型,不能滿足跨平臺的需求。
因為C語言現有的基本數據類型在不同的平臺有不同的字節長度,當換一個平臺時可能會在數據大小方面出現問題。
int8_t、uint8_t等這類數據類型有什么用
Integer type with a width of exactly 8, 16, 32, or 64 bits.
具有精確位寬的8位、16位、32位或64位整型
也就是說,無論在什么平臺,無論用什么編譯器,只要是遵守C語言標準的,
int8_t和uint8_t一定是8位的整型,
int16_t和uint16_t一定是16位的整型,
int32_t和uint32_t一定是32位的整型,
int64_t和uint64_t一定是64位的整型
頭文件
在C語言中,它們定義在stdint.h
在C++中,它們定義在cstdint
int8_t、uint8_t等這類數據類型是怎么實現的
我研究了幾個小時也沒能徹底弄懂,感覺沒那么簡單,還是挺復雜的,
其實也不用研究這些,知道怎么用、為什么要用就可以了,
不建議去研究這個....
?
?