数据
1. 计算机存储数据的方式
计算机眼中的数据是 0 和 1 的序列
2. C 的基本类型 (Basic Type)
2.1 字符类型 (Character Type)
char
signed char
,unsigned char
wchar_t
,char16_t
,char32_t
2.2 整数类型 (Integer Type)
char
signed char
,short
,int
,long
,long long
__int128
等实现定义的类型- 2 和 3 统称有符号整数类型
bool
unsigned char
unsigned short
,unsigned
,unsigned long
,unsigned long long
__uint128
等实现定义的类型- 5,6 和 7 统称无符号整数类型
- 类型
size_t
是实现定义的类型,一般在我们的电脑上相当于unsigned long long
对于
signed char
和unsigned char
这两个类型,mdr 很不看好;char
的意思是字符,为什么要用有无符号的“字符”表示整数呢?mdr 还是喜欢用byte
和unsigned byte
表示 8 位整数,但是 C 里面没这俩类型
2.3 浮点类型 (Floating-Point Type)
- 实浮点类型(表示一个实数):
float
,double
,long double
- 十进制实浮点类型:
_Decimal32
,_Decimal64
,_Decimal128
- 虚数类型(表示一个虚数):
float _Imaginary
,double _Imaginary
,long double _Imaginary
- 复数类型(表示一个复数):
float _Complex
,double _Complex
,long double _Complex
3. 类型的大小和表示范围
3.1 sizeof
运算符的一种用法
sizeof ( 类型名 )
- 返回值类型为
size_t
,返回的值即为此类型占据空间的大小
3.2 整型占据内存空间的大小和能表示的范围
signed char
/unsigned char
:1 字节(unsigned) short
:至少 2 字节,一般 2 字节(unsigned) int
:至少 2 字节,一般 4 字节(unsigned) long
:至少 4 字节,一般 4 或 8 字节(unsigned) long long
:至少 8 字节,一般 8 字节- N 字节的有符号整数,取值范围为 -(2^(8N-1)) 到 2^(8N-1)-1;N 字节的无符号整数,取值范围为 0~2^8N^-1,见下:
- 1 字节的有符号整数,取值范围为 -128~127;1 字节的无符号整数,取值范围为 0~255
- 2 字节的有符号整数,取值范围为 -32768~32767;2 字节的无符号整数,取值范围为 0~65535
- 4 字节的有符号整数,取值范围为 -2147483648~2147483647;4 字节的无符号整数,取值范围为 0~4294967295
- 8 字节的有符号整数,取值范围为 -9,223,372,036,854,775,808~9,223,372,036,854,775,807;8 字节的无符号整数,取值范围为 0~18,446,744,073,709,551,615
3.3 浮点型占据内存空间的大小,能表示的范围和精度
- IEEE754 详情参见 IEEE754.md
float
:4 字节,从 -2^128^ 到 2^128^,6~7 位有效数字double
:8 字节,从 -2^1024^ 到 2^1024^,15~16 位有效数字long double
:实现定义,最低 8 字节
本章内容对应 cppref 链接如下: