Skip to content

数据

1. 计算机存储数据的方式

计算机眼中的数据是 0 和 1 的序列

2. C 的基本类型 (Basic Type)

2.1 字符类型 (Character Type)

  1. char
  2. signed charunsigned char
  3. wchar_tchar16_tchar32_t

2.2 整数类型 (Integer Type)

  1. char
  2. signed charshortintlonglong long
  3. __int128等实现定义的类型
  4. 2 和 3 统称有符号整数类型
  5. bool
  6. unsigned char unsigned shortunsignedunsigned longunsigned long long
  7. __uint128等实现定义的类型
  8. 5,6 和 7 统称无符号整数类型
  9. 类型size_t是实现定义的类型,一般在我们的电脑上相当于unsigned long long

对于 signed charunsigned char 这两个类型,mdr 很不看好; char 的意思是字符,为什么要用有无符号的“字符”表示整数呢?mdr 还是喜欢用 byteunsigned byte 表示 8 位整数,但是 C 里面没这俩类型

2.3 浮点类型 (Floating-Point Type)

  1. 实浮点类型(表示一个实数):floatdoublelong double
  2. 十进制实浮点类型:_Decimal32_Decimal64_Decimal128
  3. 虚数类型(表示一个虚数):float _Imaginarydouble _Imaginarylong double _Imaginary
  4. 复数类型(表示一个复数):float _Complexdouble _Complexlong double _Complex

3. 类型的大小和表示范围

3.1 sizeof 运算符的一种用法

  1. sizeof ( 类型名 )
  2. 返回值类型为 size_t,返回的值即为此类型占据空间的大小

3.2 整型占据内存空间的大小和能表示的范围

  1. signed char / unsigned char:1 字节
  2. (unsigned) short:至少 2 字节,一般 2 字节
  3. (unsigned) int:至少 2 字节,一般 4 字节
  4. (unsigned) long:至少 4 字节,一般 4 或 8 字节
  5. (unsigned) long long:至少 8 字节,一般 8 字节
  6. N 字节的有符号整数,取值范围为 -(2^(8N-1))2^(8N-1)-1;N 字节的无符号整数,取值范围为 0~2^8N^-1,见下:
  7. 1 字节的有符号整数,取值范围为 -128~127;1 字节的无符号整数,取值范围为 0~255
  8. 2 字节的有符号整数,取值范围为 -32768~32767;2 字节的无符号整数,取值范围为 0~65535
  9. 4 字节的有符号整数,取值范围为 -2147483648~2147483647;4 字节的无符号整数,取值范围为 0~4294967295
  10. 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 浮点型占据内存空间的大小,能表示的范围和精度

  1. IEEE754 详情参见 IEEE754.md
  2. float:4 字节,从 -2^128^2^128^6~7 位有效数字
  3. double:8 字节,从 -2^1024^2^1024^15~16 位有效数字
  4. long double:实现定义,最低 8 字节

本章内容对应 cppref 链接如下: