C 数据类型
基本类型 整型类型 基本整型 短整型 长整型 双长整型 字符型 浮点类型 单精度浮点型 双精度浮点型 复数浮点型 枚举类型 空类型 派生类型 指针类型 数组类型 结构体类型 共用体类型 函数类型 --- 基本整型(int型):16位软件2个,32位软件4个字节 短整型(short int):32位软件占2个字节 长整型(long int):32位软件占4个字节 双长整型(long long int):8个字节,C99新增的
C 语言允许使用的数据类型
整型数据
分类
- 基本整型(int型):16位软件2个,32位软件4个字节
- 短整型(short int):32位软件占2个字节
- 长整型(long int):32位软件占4个字节
- 双长整型(long long int):8个字节,C99新增的
整型变量的符号属性
扩充 有符号 signed 无符号 unsighed
有符号基本整型 (signed) int; 或 signed (int); 无符号基本整型 unsigned (int); 有符号短整型 (signed] short (int); 无符号短整型 unsigned short (int); 有符号长整型 (signed) long (int); 无符号长整型 unsigned long (int) 有符号双长整型 (signed) long long (int); 无符号双长整型 unsigned long long (int)
| 变量类型名 | 变量类型 | 所占字节数 | 数的范围 |
|---|---|---|---|
| 基本整型 | [signed] int |
4 | -2147483648 ∼ 2147483647 |
| 短整型 | [signed] short [int] |
2 | -32768 ∼ 32767 |
| 长整型 | [signed] long [int] |
4 | -2147483648 ∼ 2147483647 |
| 无符号基本型 | unsigned [int] |
4 | 0 ∼ 4294967295 |
| 无符号短整型 | unsigned short [int] |
2 | 0 ∼ 65535 |
| 无符号长整型 | unsigned long [int] |
4 | 0 ∼ 4294967295 |
TIP: 💡 小贴士:
- 方括号
[]的含义:在 C 语言语法中,方括号内的部分是可以省略的。例如signed int直接写成int也是一样的。- 关于
long的大小:表格中显示long为 4 字节(通常在 Windows 32/64 位系统下),但在 Linux 64 位系统下,long通常会占据 8 字节。- 范围的计算:
- 有符号 4 字节(32位)的范围是:-2^31 ∼ 2^31-1
- 无符号 4 字节(32位)的范围是:0 ∼ 2^32-1
电脑以补码的形式存放数据
字符型数据
字符是按其代码(即ASCII码,整数)形式存储的
C99把字符型数据作为整数类型的一种
ASCII码,0到127
char型数据, -128到127
ATTENTION 字符型char 数据,通常是一个字节(八位), 这是一个整数(int)类型。
ASCII码表
计算机采用ASCII字符集:
| Dec | Hex | Char | Dec | Hex | Char | Dec | Hex | Char | Dec | Hex | Char |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 00 | NUL | 32 | 20 | SPC | 64 | 40 | @ | 96 | 60 | ` |
| 1 | 01 | SOH | 33 | 21 | ! | 65 | 41 | A | 97 | 61 | a |
| 2 | 02 | STX | 34 | 22 | “ | 66 | 42 | B | 98 | 62 | b |
| 3 | 03 | ETX | 35 | 23 | # | 67 | 43 | C | 99 | 63 | c |
| 4 | 04 | EOT | 36 | 24 | $ | 68 | 44 | D | 100 | 64 | d |
| 5 | 05 | ENQ | 37 | 25 | % | 69 | 45 | E | 101 | 65 | e |
| 6 | 06 | ACK | 38 | 26 | & | 70 | 46 | F | 102 | 66 | f |
| 7 | 07 | BEL | 39 | 27 | ’ | 71 | 47 | G | 103 | 67 | g |
| 8 | 08 | BS | 40 | 28 | ( | 72 | 48 | H | 104 | 68 | h |
| 9 | 09 | HT | 41 | 29 | ) | 73 | 49 | I | 105 | 69 | i |
| 10 | 0A | LF | 42 | 2A | * | 74 | 4A | J | 106 | 6A | j |
| 11 | 0B | VT | 43 | 2B | + | 75 | 4B | K | 107 | 6B | k |
| 12 | 0C | FF | 44 | 2C | , | 76 | 4C | L | 108 | 6C | l |
| 13 | 0D | CR | 45 | 2D | - | 77 | 4D | M | 109 | 6D | m |
| 14 | 0E | SO | 46 | 2E | . | 78 | 4E | N | 110 | 6E | n |
| 15 | 0F | SI | 47 | 2F | / | 79 | 4F | O | 111 | 6F | o |
| 16 | 10 | DLE | 48 | 30 | 0 | 80 | 50 | P | 112 | 70 | p |
| 17 | 11 | DC1 | 49 | 31 | 1 | 81 | 51 | Q | 113 | 71 | q |
| 18 | 12 | DC2 | 50 | 32 | 2 | 82 | 52 | R | 114 | 72 | r |
| 19 | 13 | DC3 | 51 | 33 | 3 | 83 | 53 | S | 115 | 73 | s |
| 20 | 14 | DC4 | 52 | 34 | 4 | 84 | 54 | T | 116 | 74 | t |
| 21 | 15 | NAK | 53 | 35 | 5 | 85 | 55 | U | 117 | 75 | u |
| 22 | 16 | SYN | 54 | 36 | 6 | 86 | 56 | V | 118 | 76 | v |
| 23 | 17 | ETB | 55 | 37 | 7 | 87 | 57 | W | 119 | 77 | w |
| 24 | 18 | CAN | 56 | 38 | 8 | 88 | 58 | X | 120 | 78 | x |
| 25 | 19 | EM | 57 | 39 | 9 | 89 | 59 | Y | 121 | 79 | y |
| 26 | 1A | SUB | 58 | 3A | : | 90 | 5A | Z | 122 | 7A | z |
| 27 | 1B | ESC | 59 | 3B | ; | 91 | 5B | [ | 123 | 7B | { |
| 28 | 1C | FS | 60 | 3C | < | 92 | 5C | \ | 124 | 7C | | |
| 29 | 1D | GS | 61 | 3D | = | 93 | 5D | ] | 125 | 7D | } |
| 30 | 1E | RS | 62 | 3E | > | 94 | 5E | ^ | 126 | 7E | ~ |
| 31 | 1F | US | 63 | 3F | ? | 95 | 5F | _ | 127 | 7F | DEL |
转义字符
详见:转义字符
字符变量
用char来定义字符变量
EXAMPLE
char c = '?'; //系统把"?"的ASCII代码63赋给变量c printf("%d %c",c,c); //输出的结果是:63 ?
浮点型数据
float型(单精度浮点型)
编译系统为float型变量分配4个字节 6位有效数字 范围:10E±37
double型(双精度浮点型)
编译系统为double型变量分配8个字节 15位有效数字 范围10E±308
long double(长双精度)型
布尔型_Bool
1 代表 是(True) 0 代表 否(False)