基本单词:令牌直觉
编译器读你的文件时,会把字符切成「有意义的小块」:关键字、名字、数字、字符串、运算符、分号花括号。读报错时,先想这是哪一类小块出问题。
1. 概念分类
| 类别 | 例子 | 说明 |
|---|---|---|
| 关键字 | int / if / return | 语言保留,不能当变量名 |
| 标识符 | counter / main | 你自己起的名字 |
| 整数常量 | 42 / 0x1F | 直接写出来的数 |
| 浮点常量 | 3.14 / 1.5f | 带小数点 |
| 字符常量 | 'A' | 单引号包一个字符 |
| 字符串 | "hello" | 双引号,结尾隐含 \0 |
| 运算符 | + - * / == | 做运算 |
| 分隔符 | ; { } ( ) | 划分结构 |
2. 同一段代码的「切块」示意
| 1 | int age = 18; |
| 2 | // 切块: |
| 3 | // 关键字 int |
| 4 | // 标识符 age |
| 5 | // 运算符 = |
| 6 | // 整数常量 18 |
| 7 | // 分隔符 ; |
3. 为什么这有用
- 报错 expected ; → 分隔符类问题
- 报错 unexpected identifier → 名字/关键字用错位置
- 把错误按「类别」想,比瞎改快