轉自:
https://blog.csdn.net/Mary19920410/article/details/71518130
一、C語言基本資料類型回顧
在C語言中有6種基本資料類型:short、int、long、float、double、char
1、數值類型
1)整型:short、int、long
2)浮點型:float、double
2、字元類型:char
二、typedef回顧
typedef用來定義關鍵字或辨別符的别名,例如:
typedef double wages;
typedef wages salary;
三、uint8_t\uint_16_t\uint32_t\uint64_t
1、這些類型的來源:這些資料類型中都帶有_t, _t 表示這些資料類型是通過typedef定義的,而不是新的資料類型。也就是說,它們其實是我們已知的類型的别名。
2、使用這些類型的原因:友善代碼的維護。比如,在C中沒有bool型,于是在一個軟體中,一個程式員使用int,一個程式員使用short,會比較混亂。最好用一個typedef來定義一個統一的bool:
typedef char bool;
在涉及到跨平台時,不同的平台會有不同的字長,是以利用預編譯和typedef可以友善的維護代碼。
3、這些類型的定義:
在C99标準中定義了這些資料類型,具體定義在:/usr/include/stdint.h ISO C99: 7.18 Integer types
#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
4、格式化輸出:
uint16_t %hu
uint32_t %u
uint64_t %llu
5 、uint8_t類型的輸出:
注意uint8_t的定義為
typedef unsigned char uint8_t;
uint8_t實際上是一個char。是以輸出uint8_t類型的變量實際上輸出其對應的字元,而不是數值。例:
uint8_t num = 67;
cout << num << endl;
輸出結果:C