CC++ & Algorithm

C++语句的执行顺序

简单23
语言版本:C++Python
概述:语句顺序就像做菜的步骤,先放油才能炒菜,顺序错了菜就会糊。

按部就班:C++语句的执行顺序

你有没有试过按照菜谱做菜?菜谱会告诉你:“第一步,打鸡蛋;第二步,切番茄;第三步,炒鸡蛋;第四步,放入番茄一起炒。”如果你颠倒了顺序,先炒番茄再放鸡蛋,结果就是糊成一团,完全不是番茄炒蛋了。在C++里,语句也是这样——必须按照从上到下的顺序,一条一条执行,不能随便跳来跳去。这种“一行接一行,依次执行”的方式,就叫顺序结构

电脑是个非常听话的机器人,它不会猜你想做什么,只会严格按照你写的代码顺序去做。所以我们写代码就像写说明书,每一步都要排好顺序,从第一行到最后一行的顺序决定了程序的最终结果。

什么是顺序结构?

顺序结构是最简单的程序结构。程序启动后,从 main 函数的第一行代码开始,逐行向下执行,直到最后一行 return 0; 结束。中间不会跳过任何一行,也不会提前执行后面的内容。

比如下面这段代码,它会按顺序打印三句话:

#include <iostream>
using namespace std;

int main() {
    cout << "第一句:早上好!" << endl;
    cout << "第二句:中午好!" << endl;
    cout << "第三句:晚上好!" << endl;
    return 0;
}

运行结果:

第一句:早上好!
第二句:中午好!
第三句:晚上好!

如果调换 cout 的顺序,输出的句子顺序也会跟着变。这就是顺序结构的体现——代码的物理顺序决定了执行的逻辑顺序

语句从上到下执行:用交换变量举例

我们来看一个更典型的例子:交换两个变量的值。假设一开始 x = 5y = 3,我们想让 x 变成 3,y 变成 5。像交换两杯水,你需要一个空杯子(临时变量 temp)来帮忙。顺序错了,交换就失败了。

正确的交换步骤

#include <iostream>
using namespace std;

int main() {
    int x = 5;      // 第一个数,初始值5
    int y = 3;      // 第二个数,初始值3
    cout << "交换前: x = " << x << ", y = " << y << endl;

    // 正确交换:借助一个临时变量
    int temp;       // 拿一个空盒子
    temp = x;       // 第一步:把x的东西(5)放进temp
    x = y;          // 第二步:把y的东西(3)放进x
    y = temp;       // 第三步:把temp里的5放进y

    cout << "交换后: x = " << x << ", y = " << y << endl;
    return 0;
}

运行结果:

交换前: x = 5, y = 3
交换后: x = 3, y = 5

每一步都做对了,顺序不能乱。我们来一步步跟踪:

  • 初始:x=5y=3temp 没有值(垃圾值)
  • 执行 temp = x;temp=5,x还是5,y还是3
  • 执行 x = y;x=3,temp=5,y=3
  • 执行 y = temp;y=5,x=3,temp=5

最后 x=3, y=5,成功交换。

错误顺序:先执行 x = y 再执行 y = x

很多新手会想:“交换不就是把x变成y,y变成x吗?直接写 x = y; y = x; 不就行了?”我们来试试看:

#include <iostream>
using namespace std;

int main() {
    int x = 5;
    int y = 3;
    cout << "交换前: x = " << x << ", y = " << y << endl;

    // ❌ 错误的交换:没有用临时变量
    x = y;          // 第一步:x变成3
    y = x;          // 第二步:y变成3(x已经是3了)

    cout << "交换后: x = " << x << ", y = " << y << endl;
    return 0;
}

运行结果:

交换前: x = 5, y = 3
交换后: x = 3, y = 3

为什么?因为 x = y; 之后,x原来的值5被覆盖掉了(就像把A杯子的水倒进B杯子,A空了,但这里是把y的水倒进x,x原来的水没地方存,直接扔掉了)。接着 y = x; 就是把已经变成3的x赋值给y,所以最后x和y都变成了3,5丢失了。

顺序决定了结果是成功还是失败。就像做菜,先放鸡蛋还是先放番茄,结果完全不同。

更多的顺序错误

  • 颠倒赋值顺序y = x; x = y; 同样会导致丢失一个值(这次丢失的是y原来的3)。
  • 忘记声明临时变量:直接写 x = y; y = x; 就是上面这种错误。
  • 临时变量没初始化就使用int temp; y = temp; 这样会得到一个随机的垃圾值。

生活中的顺序例子

不仅仅是交换变量,生活中处处都需要顺序:

  • 计算零花钱:假设你每周有20元零花钱,买零食花了8元,买文具花了5元,还剩多少?计算顺序是:20 - 8 = 12,再 12 - 5 = 7。如果你先减5再减8,结果一样(因为减法顺序可交换),但如果你先做加法再做减法就错了。
  • 考试查分:先输入你的学号,然后系统查询分数并显示。如果你先查询再输入学号,程序就会报错,因为还没拿到学号呢。
  • 排队领餐:先排队,再点餐,最后取餐。如果你先点餐再排队,食堂阿姨会把你轰出去。

计算机程序也是这样:输入、处理、输出,这三个阶段必须按顺序来。比如计算平均分的程序:

#include <iostream>
using namespace std;

int main() {
    // 第一步:输入数据
    int score1, score2, score3;   // 三科成绩
    cout << "请输入三科成绩(用空格隔开):";
    cin >> score1 >> score2 >> score3;

    // 第二步:计算总分和平均分
    int sum = score1 + score2 + score3;            // 总分
    double average = sum / 3.0;                   // 平均分(注意用浮点数除法)

    // 第三步:输出结果
    cout << "总分 = " << sum << endl;
    cout << "平均分 = " << average << endl;

    return 0;
}

如果先计算平均分再输入成绩,那 score1 等变量还没值,程序就会出问题。

新手常见错误

  1. 赋值方向写反:比如想给x赋值为5,却写成 5 = x;。编译就会报错,因为等号左边必须是变量,不能是常量。
  2. 变量未初始化就使用int x; cout << x; 会输出一个随机的垃圾值。所以最好在定义变量时就给个初始值。
  3. 顺序颠倒导致逻辑错误:就像上面交换变量的错误,程序能运行但结果不对。这是最难发现的错误,因为不报错,需要自己仔细推理。
  4. 忘记加分号:每条语句末尾必须有分号 ;,否则编译报错。顺序结构里少一个分号,后面的语句可能都受影响。
  5. 输入输出顺序搞反:先输出提示信息再输入,是好习惯。如果先 cincout,用户会看到黑屏,不知道该做什么。

完整实例:计算购买文具的总价

下面我们写一个完整的程序,它按顺序实现:提示用户输入单价和数量、计算总价、显示结果。注意每一步的顺序都不能乱。

#include <iostream>
using namespace std;

int main() {
    // 1. 定义变量
    double price;          // 单价(元)
    int quantity;          // 数量(个)
    double total;          // 总价(元)

    // 2. 输入数据(先提示,再读取)
    cout << "请输入文具的单价(元):";
    cin >> price;

    cout << "请输入购买数量:";
    cin >> quantity;

    // 3. 计算总价
    total = price * quantity;

    // 4. 输出结果
    cout << "总价为:" << total << " 元" << endl;

    return 0;
}

运行示例:

请输入文具的单价(元):2.5
请输入购买数量:4
总价为:10 元

如果交换了第2步和第3步的顺序(先计算再输入),pricequantity 还没有值,计算就会出错,导致结果莫名其妙。

总结与相关指引

顺序结构是C++程序的骨架。记住三句话:

  • 从上到下:代码按书写顺序执行,不跳不绕。
  • 按步就班:每一步都依赖前面的结果。
  • 细心检查:特别是赋值语句的执行顺序,多用手动模拟跟踪。

学会顺序结构后,下一步可以学习分支结构if / else),让程序能根据条件选择不同的执行路径;以及循环结构for / while),让程序重复执行某些语句。但无论多么复杂的程序,最基础的都是顺序结构——每一行代码都得老老实实按顺序来。

如果你已经掌握了顺序结构,不妨试试这个练习:写一个程序,输入一个三位数,然后按顺序输出它的百位、十位、个位数字(比如输入 387,输出 3 8 7)。提示:用整除和取余运算,注意计算的顺序。


相关知识点:变量与赋值、输入输出、算术运算符

例题精讲

1单选题

以下关于C++语句执行顺序的描述,正确的是?

A按照代码书写顺序从上到下依次执行
B按照变量名大小顺序执行
C按照函数调用顺序执行
D随机执行
2判断题

在顺序结构中,改变两条赋值语句的顺序可能会导致程序输出不同的结果。

3填空题
以下程序希望输出15,请补全缺失的语句(一行代码)。
#include <iostream>
using namespace std;
int main() {
    int a;
    ___
    int b = a + 5;
    cout << b;
    return 0;
}
4单选题

以下代码执行后输出结果是? int main() { int num = 5; cout << num; num = 10; cout << num; return 0; }

A510
B55
C1010
D010
5判断题

在C++中,程序总是从main函数的第一条语句开始按顺序执行,直到return 0结束。