# c语言
## 一 语法
### 第一章 类型,运算符与表达式
#### 1.变量
##### 1.1 变量名
变量标识符只可以使用字母,下划线以及数字,其中标识符的开头必须是字母或下划线。
下划线开头的变量一般是扩展或实现,用户不应该直接使用。
变量是区分大小写的,我们一般用小写来标识变量,大写来标识常量。
变量名不能与关键字冲突。
##### 1.2 变量与常量
变量是可以变化的,有的时候我们不想要变量被改变,可以使用 `#define`定义一个宏,或者使用 `const`关键字对变量进行限定。前者是狭义上的常量。
#### 2. 数据类型及长度
##### 2.1 基本数据类型c89
- `char`: 1个字节
- `short`: 2个字节
- `int`: 2 或 4个字节
- `long`: 4 或 8个字节
- `float`: 4 个字节
- `double`: 8 个字节
添加 `unsigned`,长度不变,范围则从0开始。
##### 2.2 新增数据类型c99
- `long long`:8 个字节
- `long doble`: 长度不定
- `_Bool`: 1个字节,需要包含 `stdbool.h`
- `int_8`, `int_16`, `int_32`... 需要包含`inttypes.h`
#### 3. 常量
##### 3.1 数字类型常量
- `123`: 默认为`int`类型的常量, 后缀 `l` 或 `L` 则为 `long` 类型, 如 `123L`。
- 如果一个数字太大,超过 `int` 的范围,则被当作 `long` 类型进行处理。
- 无符号常量用 `u` 或 `U`进行结尾, 如 `123u` 表示 `unsigned int` 类型, `u`/`U` 可以与 `l`/`L`一起使用, 如 `1111UL` 表示 `unsigned long int` 类型。
- `123.45`: 浮点数默认为 `double` 类型,后缀 `f`/`F`, 则表示为 `float` 类型。
##### 3.2 八进制,十六进制的整型
- `011`: 0开头的数字表示8进制,这里`011` 即十进制的 `9`
- `0X11` / `0x11`: `0x`或`0X`开头的数字表示16进制整数, 这里的 `0x11` 即 17
##### 3.3 字符常量
字符常量是整数类型的一种, 因此可以直接与整数进行运算:
```c
```
## 二 标准库
## 三 三方库
## 四 c语言标准变化
## 五 gcc