### C语言基础知识精简概述
#### 数据类型与常量
**C语言中的数据类型**包括基本数据类型和构造数据类型。基本数据类型主要包括整型、浮点型、字符型等。
- **整型**
- **十进制**: 120
- **八进制**: 0170 (前缀`0`表示八进制)
- **十六进制**: 0x78 (`0x`或`0X`表示十六进制)
- **浮点型**
- **科学计数法**: `3.14e` (或`3.14E`, 表示3.14乘以10的次方)
- **标准计数法**: `1.2e2` (或`1.2E2`, 表示1.2乘以10的2次方)
- **字符型**
- **可见字符**: `'a'`, `'A'`
- **不可见字符**: `\a` (报警音), `\A` (未定义, 这里仅作为示例)
- **字符的多种表示方法**:
- 十进制`\007`
- ASCII码`7`
- 十六进制`\x07`
- 不可见字符`\a`
- **字符串型**: `"abcd"`, `"hello world"`
- **符号型**: `#define PI 3.14` (宏定义)
#### 变量
**变量**用于存储数据, 包括:
- **整型变量**
- `int`: 整型 (32位系统中占4个字节)
- `short`: 短整型 (32位系统中占2个字节)
- `long`: 长整型 (32位系统中占8个字节)
- `long long`: 长长整型 (32位系统中占8个字节)
- **浮点型变量**
- `float`: 单精度浮点型 (占4个字节)
- `double`: 双精度浮点型 (占8个字节)
- `long double`: 长双精度浮点型 (占16个字节)
- **字符型变量**
- `char`: 字符型 (占1个字节)
- **布尔型变量**
- `bool`: 布尔型 (占1个字节)
- **无符号型**
- `unsigned`: 表示无符号数据, 通常用于非负数, 如`unsigned int`, `unsigned char`等。
#### 数据类型转换
**类型转换**分为隐式转换和显式转换。
- **隐式转换**
- **系统自动转换**: 当不同类型的变量参与运算时, C语言会自动进行类型提升。
- **有符号到无符号**: 从有符号转到无符号时, 其值不变。
- **小类型到大类型**: 当较小的数据类型参与运算时, 它会被自动提升到较大的数据类型。
- **显式转换** (强制类型转换)
- **程序员在程序中强制转换**:
- 例如: `(int)3.14` 将浮点数3.14转换成整型。
- **无符号到有符号**: 在这种情况下, 无符号值可能会被截断或扩展以适应有符号类型。
- **大类型到小类型**: 当从较大类型转换到较小类型时, 可能会导致数据丢失或溢出。
#### 输入和输出
**输入**: 使用`scanf()`函数, 注意:
- 如果输入数据中有字符, 字符和前面的数据之间不能用空白符隔开, 必须紧挨着输入。
**输出**: 使用`printf()`函数, 按照指定格式输出数据。
#### 运算符
- **赋值运算符**: `=` (将一个数据保存到变量中, 如`int a; a=10;`)
- 左值必须是变量, 右值可以是常量、变量、表达式等。
- **算术运算符**: `+`, `-`, `*`, `/`, `%`, `++`, `--`
- `%`: 取余数, 要求两边必须为整数。
- **逻辑运算符**: `!`, `&&`, `||`
- 用于构建复杂的逻辑判断条件。
- **关系运算符**: `>`, `>=`, `<`, `<=`, `==`, `!=`
- 用于比较两个值之间的关系。
- **位运算符**: `~`, `&`, `|`, `>>`, `<<`
- `~`: 按位取反
- `&`: 按位与
- `|`: 按位或
- `>>`: 右移位
- `<<`: 左移位
- **左移位**: 直接在右边空出的位置补0。
- **右移位**: 需要判断正负, 如果是正, 直接在左边补0; 如果是负, 则在左边补1。
- **复合运算符**: `+=`, `-=`, `*=`, `|=`, `&=`
- 结合赋值和算术运算, 如`a += b`等价于`a = a + b`。
- **条件运算符**: `表达式1 ? 表达式2 : 表达式3`
- 先判断表达式1, 如果表达式1成立, 就执行表达式2; 否则, 执行表达式3。
- **逗号运算符**: `表达式1, 表达式2, 表达式3`
- 运算结果取最后一个表达式的值。
#### sizeof运算
`sizeof()`运算符用于计算类型的长度或数据占用内存空间的大小。
#### 表达式与语句
- **表达式**: 由运算符、运算量和标点符号等组成的有效序列, 描述一个计算过程。
- **语句**: C语言程序执行的基本单元, 一般以分号`;`结束。
#### 控制流结构
**循环结构**:
- **while循环**
- `while(表达式)`
- 如果表达式为真, 则执行循环体, 再次判断, 如仍为真, 继续执行。
- **do-while循环**
- `do { 循环体 } while(表达式);`
- 程序先执行一次循环体, 然后判断, 如为真, 继续执行。
- **for循环**
- `for(表达式1; 表达式2; 表达式3)`
- 先执行表达式1, 然后判断表达式2, 如为真, 执行循环体, 然后执行表达式3, 再判断表达式2, 如此循环。
**分支/条件结构**:
- **if语句**
- `if(表达式) { 程序 }`
- 如果表达式为真, 执行括号内的程序, 否则跳过执行后续程序。
- **if-else语句**
- `if(表达式) { 符合表达式的程序a } else { 不符合表达式的程序b }`
- 如果表达式为真, 执行程序a; 否则, 执行程序b。
- **switch-case语句**
- `switch(表达式) { case 整型常量: 程序a; case 整型常量: 程序b; ... case 整型常量: 程序n; default: 程序x; }`
- 表达式的结果为整数, 从第一个`case`开始执行, 直到遇到`break`或`default`为止。
通过以上对C语言的基础知识点的总结, 我们可以看到C语言作为一种结构化编程语言, 具备丰富的数据类型、运算符以及控制流结构, 适用于各种应用程序开发。