C++ uint8_t
問題:uint8_t是什么數(shù)據(jù)類型?
解決:C++的主要數(shù)據(jù)類型,主要分為三類:布爾型,整型,浮點型。
按照posix標(biāo)準(zhǔn),一般整型對應(yīng)的*_t類型為:
1字節(jié)?? ? uint8_t
2字節(jié)?? ? uint16_t
4字節(jié)?? ? uint32_t
8字節(jié)?? ? uint64_t
類型的定義:
#ifndef __int8_t_defined ?
# define __int8_t_defined ?
typedef signed char ? ? ? ? ? ? int8_t; ??
typedef short int ? ? ? ? ? ? ? int16_t; ?
typedef int ? ? ? ? ? ? ? ? ? ? int32_t; ?
# if __WORDSIZE == 64 ?
typedef long int ? ? ? ? ? ? ? ?int64_t; ?
# else ?
__extension__ ?
typedef long long int ? ? ? ? ? int64_t; ?
# endif ?
#endif
typedef unsigned char ? ? ? ? ? uint8_t; ?
typedef unsigned short int ? ? ?uint16_t; ?
#ifndef __uint32_t_defined ?
typedef unsigned int ? ? ? ? ? ?uint32_t; ?
# define __uint32_t_defined ?
#endif ?
#if __WORDSIZE == 64 ?
typedef unsigned long int ? ? ? uint64_t; ?
#else ?
__extension__ ?typedef unsigned long long int ?uint64_t; ?
#endif ?
而在基礎(chǔ)數(shù)據(jù)類型中,int也是4個字節(jié)的,所以可以把uint32_t看作是int的別名。
比如數(shù)據(jù)類型?long —般在 32 位程 序中為4字節(jié) ,在 64 位程序中則為8字節(jié)也就是說不同編譯器下long的大小可能不同。
為了避免由于依賴“典型”大小和不同編譯器設(shè)置帶來的奇怪 行為, ISO C99 引人了一類數(shù)據(jù)類型 ,?其數(shù)據(jù)大小是固定的?,不隨編譯器和機器設(shè)置而變化。
?
uint8_t就是可表示范圍更小的整型數(shù)據(jù)類型。(char型從本質(zhì)上說,也是種整型類型,它是長度為1的整數(shù),通常用來存放字符的ASCII碼)
拓展:由于uint8_t實際上就是一個char,所以輸出 uint8_t類型的變量實際上輸出對應(yīng)的字符,而不是數(shù)值,所以如果想要按照數(shù)字輸出,可以看看以下鏈接
c++ - uint8_t can't be printed with cout - Stack Overflow
比較簡單的一個方法:
uint8_t a=102;
cout<<"a="<<+a;
即在需要輸出的?uint8_t變量前面加“+”。
總結(jié)
以上是生活随笔為你收集整理的C++ uint8_t的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。