C++ uint8
问题:uint8_t是什么数据类型?
解决:C++的主要数据类型,主要分为三类:布尔型,整型,浮点型。
按照posix标准,一般整型对应的*_t类型为:
1字节 uint8_t
2字节 uint16_t
4字节 uint32_t
8字节 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
而在基础数据类型中,int也是4个字节的,所以可以把uint32_t看作是int的别名。
比如数据类型 long —般在 32 位程 序中为4字节 ,在 64 位程序中则为8字节也就是说不同编译器下long的大小可能不同。
为了避免由于依赖“典型”大小和不同编译器设置带来的奇怪 行为, ISO C99 引人了一类数据类型 , 其数据大小是固定的 ,不随编译器和机器设置而变化。
uint8_t就是可表示范围更小的整型数据类型。(char型从本质上说,也是种整型类型,它是长度为1的整数,通常用来存放字符的ASCII码)
拓展:由于uint8_t实际上就是一个char,所以输出 uint8_t类型的变量实际上输出对应的字符,而不是数值,所以如果想要按照数字输出,可以看看以下链接
c++ - uint8_t can't be printed with cout - Stack Overflow
比较简单的一个方法:
uint8_t a=102;
cout<<"a="<<+a;
即在需要输出的 uint8_t变量前面加“+”。
更多推荐
C++ uint8
发布评论