CppStudio logo CppStudio
首页 / 教程 / 第2课

C++ 程序可视化教程 · 第2课 · 第一章 程序

C++ 程序是怎么跑起来的?从代码到运行发生了什么

CPU 只认识机器码,读不懂源代码。因此从代码到运行分两步: 先由编译器把源代码整体翻译成机器码(编译),再由操作系统执行翻译出的程序(运行)。 编译不通过,运行无从谈起。

两步:先编译,后运行

点击一次「运行」,背后依次发生两件事:

  1. 编译:编译器把源代码从头到尾翻译成机器码。翻译通过,得到可执行程序;翻译失败,得到编译错误。
  2. 运行:操作系统启动该程序,从 main 开始逐句执行,直到 return 结束。
#include <iostream>
using namespace std;

int main() {
    int a = 6;
    int b = 7;
    cout << a * b << endl;
    return 0;
}

在 CppStudio 中运行本课示例:编译瞬间完成,运行阶段流程图依次高亮 a = 6b = 7、输出 42、return——程序不是一瞬间完成的,它一步一步往下走。

两类错误,两个阶段

分清两个阶段,才能分清两类错误:

编译错误 运行错误
发生时机 翻译阶段,程序未执行 程序执行期间
典型例子 漏分号、变量未定义 除以零、数组越界、死循环
表现 编译器指明第几行第几列 崩溃、卡住或结果错误
修复难度 低,按报错位置修改 高,需要观察运行过程

编译错误是初学阶段最常见的报错,它不是惩罚,而是编译器在逐行校对你的代码。

为什么要可视化

传统方式中「运行」是黑盒:按下按钮,只能看到最终结果。中间哪句先执行、变量何时变化,全靠推测。运行错误难修,根本原因就是这个过程不可见。

CppStudio 在浏览器本地完成编译(代码不离开你的设备),运行过程以动态流程图呈现,每个变量的每次变化都记录在监视区。看得见,才修得了。

动手验证

把示例中的 int b = 7; 改为 int b = ; 再运行:程序不会进入运行阶段,编译器直接报出出错行号。改回正确写法再运行一次,对比两个阶段的差异。

下一课:#include 包含的头文件到底是什么。

在 CppStudio 里打开本课示例,亲手运行 →

常见问题

编译和运行是一回事吗?

不是。编译是把源代码翻译成机器码,只需一次;运行是执行翻译出的程序,可以执行多次。编译不通过,程序不会进入运行阶段。

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

编译错误发生在翻译阶段,程序尚未执行,如漏分号、变量未定义,编译器会指明出错位置;运行错误发生在程序执行期间,如除以零、数组越界,通常表现为崩溃或结果错误。

为什么 C++ 不能直接运行源代码?

因为 CPU 只能执行机器码。源代码是写给人阅读的,必须由编译器先翻译。这也是 C++ 运行快的原因之一——翻译工作在运行前已全部完成。

陕ICP备2026020640号-1