第二课:数据类型和变量
(一)令牌(Token)
在 C 语言中,令牌(Token) 是程序的基本组成单位。编译器通过对源代码进行词法分析,将代码分解成一个个的令牌, 进而转化成汇编语言。
C 语言的令牌主要包括以下几种类型:
1. 关键字(Keywords)
- 关键字是 C 语言预定义的、有特殊意义的单词,不能用作标识符。
- 例如:
int,return,if,while,for等。
2. 标识符(Identifiers)
- 标识符是程序中变量、函数、数组等的名字。
- 命名规则:
- 第一个字符必须是字母(A-Z 或 a-z)或下划线
_; - 后续字符可以是字母、数字或下划线;
- 不能以数字开头;
- 区分大小写,如
Var和var是不同的标识符。
- 第一个字符必须是字母(A-Z 或 a-z)或下划线
3. 常量(Constants)
- 常量是固定值,在程序执行期间不会改变。
- 类型包括:
- 整型常量(如
10,-5) - 浮点型常量(如
3.14,-0.5) - 字符常量(如
'a','\n') - 枚举常量
- 整型常量(如
4. 字符串字面量(String Literals)
- 由双引号
"括起来的字符序列,例如"Hello World"。 - 字符串末尾会自动添加一个空字符
\0以标识字符串结束。
5. 运算符(Operators)
-
运算符用于执行各种操作,如算术、逻辑、比较等。
-
算术运算符:
+,-,*,/,% -
关系运算符:
==,!=,>,<,>=,<= -
逻辑运算符:
&&,||,! -
位运算符:
&,|,^,~,<<,>> -
赋值运算符:
=,+=,-=,*=,/=,%= -
其他运算符:
sizeof,?:,&,*,->,.
6. 分隔符(Separators)
- 用于分隔代码的不同部分。
- 例如:
;:每个语句必须以分号结束,表示一个逻辑实体的结束;{}:表示代码块;():用于函数参数或优先级;[]:用于数组下标。
(二)数据类型
变量的类型决定了变量存储所占用的空间,以及如何解释存储的位模式。
C 语言中的数据类型主要可以分为以下几种:
1. 基本数据类型
- 整型(int)
- 字符型(char)
- 浮点型(float)
- 双精度浮点型(double)
这些都是算术类型,用于表示数值。
整数类型对照表
| 类型 | 存储大小 | 值范围 |
|---|---|---|
char | 1 字节 | -128 到 127 或 0 到 255 |
unsigned char | 1 字节 | 0 到 255 |
signed char | 1 字节 | -128 到 127 |
int | 2 或 4 字节 | -32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647 |
unsigned int | 2 或 4 字节 | 0 到 65,535 或 0 到 4,294,967,295 |
short | 2 字节 | -32,768 到 32,767 |
unsigned short | 2 字节 | 0 到 65,535 |
long | 4 字节 | -2,147,483,648 到 2,147,483,647 |
unsigned long | 4 字节 | 0 到 4,294,967,295 |
浮点类型对照表
| 类型 | 存储大小 | 值范围 | 精度 |
|---|---|---|---|
float | 4 字节 | 1.2E-38 到 3.4E+38 | 6 位有效位 |
double | 8 字节 | 2.3E-308 到 1.7E+308 | 15 位有效位 |
long double | 16 字节 | 3.4E-4932 到 1.1E+4932 | 19 位有效位 |
2. 枚举类型
枚举类型也是一种算术类型,用于定义只能赋予特定离散整数值的变量。
3. void 类型
-
void表示没有值的数据类型,常用于函数的返回类型或指针类型。 -
void 类型的使用场景
| 序号 | 用法 | 描述 |
|---|---|---|
| 1 | 函数返回为空 | 不返回任何值的函数使用 void 作为返回类型,例如:void exit(int status); |
| 2 | 函数参数为空 | 不接受任何参数的函数参数类型为 void,例如:int rand(void); |
| 3 | 指针指向 void | void * 表示通用指针,可以指向任何类型的数据。例如:void *malloc(size_t size); |
4. 派生类型
- 数组类型(如
int arr[10];) - 指针类型(如
int *p;) - 结构体类型(如
struct Student {...};)
5. 类型转换
隐式类型转换
int i = 10;
float f = 3.14;
double d = i + f; // 隐式将int类型转换为double类型
显式类型转换
double d = 3.14159;
int i = (int)d; // 显式将double类型转换为int类型
(三)变量类型
变量是程序中可操作的存储空间的名称。
在 C 语言中,每个变量都有特定的类型,类型决定了变量的存储大小和布局。
变量的命名必须以字母或下划线 _ 开头,区分大小写。
1. 基本变量类型
| 类型 | 描述 |
|---|---|
char | 表示单个字符(如 'a'、'1'、'@' 等),占 1 字节(8 位),不是字符串。 |
int | 整型,通常占 4 字节,取值范围为 -2147483648 到 2147483647。 |
float | 单精度浮点型,占 4 字节。格式为:1 位符号 + 8 位指数 + 23 位尾数。例如:0 01111100 010000... 表示 0.15625。 |
double | 双精度浮点型,占 8 字节。格式为:1 位符号 + 11 位指数 + 52 位尾数。 |
void | 表示“无类型”,通常用于函数返回值或指针类型。 |