Note

由于在Obsidian中过大的表格渲染会卡顿, 所以术语表按照术语首次出现的章节划分为多个子表. (这并不影响检索)

Chapter2-基本概念

术语英文说明
指令directives#开头的语句
语句statements语句在程序中以分号;结尾(少数例外如控制结构中的复合语句)
函数function类似其他语言中的"过程"或"子例程", 是用来构建程序的构建块.
预处理器preprocessor预处理器执行#开头的指令, 并执行替换操作
编译器compiler将程序编译为机器指令 (目标文件)
链接器linker将编译器产生的目标文件与其他的依赖文件链接在一起, 最终生成可执行文件
集成开发环境integrated development environment, IDEVsCode, CLion等
库函数library functionC语言提供的函数
变量variable临时存放数据的存储单元
类型type特指C语言数据变量类型
声明declarations为编译器所做的描述, 步骤: 1. 指定类型; 2. 变量名
赋值assignment变量通过赋值获得值
常量constant立即数
表达式expression是由操作数(operands)和运算符(operators)组成的计算或逻辑单元, 能够生成一个值. 它可以是变量, 常量, 函数调用, 运算符的组合等
初始化initialization变量具有初始值
未初始化(的)uninitialized未赋初值的变量
初始化器initializer变量的初始化的初始值 (比如: int a = 8;中8就是初始化器)
宏定义micro definition通过#define定义, 利用文本替换机制实现符号常量, 参数化宏等
标识符identifier变量, 函数, 宏和其他实体的名称
规定: 字母, 数字, 下划线 (必须以字母或者下划线开头)
关键字keyword对于C编译器具有特殊意义, 不能作为标识符
记号token在不改变意思的情况下无法分割的字符组
特性: token之间对空白符 (空格, 换行) 没有限制
FEF6A8A45B7B05E22197D9B03FDC03C1
GCC旧称: GNU C Compiler
新称: GNU Compiler Collection (因为还可以编译Ada, C++等其他语言)
编译器
GNUGNU's Not UNIX对抗UNIX软件授权的项目, 可以自由开发, 改进软件, 且可以免费获取

Chapter3-格式化输出和输出

术语英文说明
格式串format string能够识别普通字符转换说明的字符串
转换说明conversion specification%开头表示打印过程中待填充值的占位符
转义序列escape sequence用于表示非打印字符或者编译器冲突字符占位符
空白符whitespace character包含: 空格, 水平制表符, 换行符, 回车符, 垂直指标符, 换页符

Chapter4-表达式

术语英文说明
算数运算符Arithmetic Operator+-*/%
关系运算符Relational Operator
逻辑运算符Logical Operator
实现定义implementation-definedC标准故意对C语言的部分内容未加指定, 并认为其细节可以由"实现"来具体定义.
所谓实现是指程序在特定的平台上编译、链接和执行所需要的软件.
根据实现的不同, 程序的行为可能会有差异。
运算符优先级operator precedence
结合性associativity表达式中多个同优先级的运算符同时出现时, 决定它们的计算顺序的规则.

注意: 结合性无法决定单个运算左右操作数的运算顺序, 且一般左右操作数的运算顺序是未指定的.
比如: a = i + j无法决定现计算i还是j
左结合的left associative运算符按从左到右的顺序计算
a - b - c 等价于 (a - b) - c
右结合的right associative运算符按从右到左的顺序计算
a = b = c 等价于 a = (b = c)
简单赋值simple assignment通过=运算符将一个值赋值给变量

v = e (e可以是变量, 常量, 复杂表达式)
复合赋值compound assignment使用复合赋值运算符的赋值操作 (右结合性)
比如: +=, -=, *=, /=, %=
副作用side effect运算符的其他功能
比如: =的副作用是改变左操作数的值
左值lvalue是一个指向某个内存位置的实体, 它可以出现在赋值语句的左侧

左值类型:
1. 变量
2. 数组元素 (通过下标访问)
3. 指针解引用
右值rvalueC语言中的"值"就是"右值", 都是指"表达式的值".
C标准中没有"右值"的概念, 只有C++中才使用这个概念
前缀运算符prefix operator++i
后缀运算符postfix operatori++
未定义行为undefined behavior后果无法预料的行为
序列点sequence point是一种程序执行的某个时刻,它标志着前一个表达式的计算已经完成,并且所有副作用(如变量修改)都已完成,而下一表达式的计算开始之前没有任何交集。

Chapter5-选择语句

未完待续...