天天看點

淺析C語言之uint8_t / uint16_t / uint32_t /uint64_t

轉自:

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

繼續閱讀