簡單來說,uint8_t / uint16_t / uint32_t /uint64_t這些數據類型都只是別名而來,具體如下:
一、C語言數據基本類型
在C語言中有6種基本數據類型:short、int、long、float、double、char
1)整型:short int、int、long int
2)浮點型:float、double
3)字符類型:char
二、分析uint8_t\uint_16_t\uint32_t\uint64_t
1、數據來源:這些數據類型中都帶有_t, _t 表示這些數據類型是通過typedef定義的,而不是新的數據類型。也就是說,它們其實是我們已知的類型的別名。
2、typedef:typedef用來定義關鍵字或標識符的別名
3、使用原因:方便代碼的維護。比如,在C中沒有bool型,於是在一個軟件中,一個程序員使用int,一個程序員使用short,會比較混亂,最好用一個typedef來定義一個統一的bool,每個程序員都可以用這個別名的bool。
不同的平台會有不同的字長,所以利用預編譯和typedef可以方便的維護代碼。
typedef unsigned char uint8_t;//將uint8_t別名為無符號字符型
4、定義:在C99標准中定義了這些數據類型,具體定義在:stdint.h中
定義類型如下:
typedef signed char int8_t;
typedef signed short int int16_t;
typedef signed int int32_t;
typedef signed __INT64 int64_t;
/* exact-width unsigned integer types */
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef unsigned __INT64 uint64_t;
/* 7.18.1.2 */
/* smallest type of at least n bits */
/* minimum-width signed integer types */
typedef signed char int_least8_t;
typedef signed short int int_least16_t;
typedef signed int int_least32_t;
typedef signed __INT64 int_least64_t;
/* minimum-width unsigned integer types */
typedef unsigned char uint_least8_t;
typedef unsigned short int uint_least16_t;
typedef unsigned int uint_least32_t;
typedef unsigned __INT64 uint_least64_t;
/* 7.18.1.3 */
/* fastest minimum-width signed integer types */
typedef signed int int_fast8_t;
typedef signed int int_fast16_t;
typedef signed int int_fast32_t;
typedef signed __INT64 int_fast64_t;
/* fastest minimum-width unsigned integer types */
typedef unsigned int uint_fast8_t;
typedef unsigned int uint_fast16_t;
typedef unsigned int uint_fast32_t;
typedef unsigned __INT64 uint_fast64_t;
/* 7.18.1.4 integer types capable of holding object pointers */
#if __sizeof_ptr == 8
typedef signed __INT64 intptr_t;
typedef unsigned __INT64 uintptr_t;
#else
typedef signed int intptr_t;
typedef unsigned int uintptr_t;
#endif
/* 7.18.1.5 greatest-width integer types */
typedef signed __LONGLONG intmax_t;
typedef unsigned __LONGLONG uintmax_t;
5、格式化輸出:
1)uint16_t %hu
2)uint32_t %u
3)uint64_t %llu
6、uint8_t類型的輸出:
typedef unsigned char uint8_t;//將uint8_t別名為無符號字符型
uint8_t buf = 65;
printf("buf = %d",buf);//錯誤
printf("buf = %c",buf);//正確,打印出字符的ASCII碼
————————————————
版權聲明:本文為CSDN博主「nandycooh」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_42108484/article/details/82692087