女孩和机器人一起思考

一起动脑筋 · 先看一个小故事

女孩写好任务单,可 CPU 不直接照着 C++ 文字工作。中间需要谁来转换?

把过程摊开来看

沿着编号看一遍,再用自己的话讲一遍
  1. 源代码人写的 C++
  2. 编译与链接转换并组合
  3. 可执行文件准备运行
  4. 运行才产生输出

编译工具把源代码转换成目标代码,链接把需要的部分组合起来。

像把一份设计图做成能用的机器:图纸画完与机器启动,是两件事。运行程序才会执行输入和输出。

01编译到底是什么?

编译(Compilation)是编译器读取源代码、分析结构和含义,并生成较低层表示或目标代码的过程。

对 C++ 来说,编译是构建可执行程序的核心阶段,但不是全部。

02编译器会做哪些事?

语法分析

检查代码结构。

语义检查

检查类型、名称等。

生成代码

转换成目标代码。

优化

改进生成结果。

03为什么它能发现一些错误?

int x = "hello";

这通常会触发类型相关的编译诊断,因为字符串字面量不能直接赋给普通 int

04编译和链接是一回事吗?

编译

把源文件转换成目标代码,并检查语言规则。

链接

把目标文件和库中的符号连接成最终程序。

05编译器还会优化代码吗?

会。现代编译器会删除无用计算、改进循环、合并表达式等,但必须遵守语言规则。

06编译错误和运行错误有什么区别?

编译错误

代码无法成功构建。

运行错误

程序运行时发生异常或非法操作。

逻辑错误

程序能跑,但答案不对。

你已经知道了什么

  • 编译是分析源代码并生成较低层代码或目标代码的过程。
  • 编译器会检查语法、类型和名称等规则,也可能优化。
  • C++ 完整构建还包括预处理、汇编和链接。
  • 编译通过不代表程序逻辑一定正确。

轮到你来试一试

计分器本来该加 2,却写成减 2。编译器一定会发现吗?

想好了吗?点开看解释

不一定。减法是合法操作,编译器通常不知道你的计分规则。要用已知答案的例子运行检查。