女孩和机器人一起思考

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

女孩给机器人记分,刚得 3 分,又得 2 分。如果纸上只留一个“当前分数”格子,该怎么更新?

把过程摊开来看

沿着编号看一遍,再用自己的话讲一遍
  1. 建立score 保存 3
  2. 读取取出当前的 3
  3. 计算3 加 2 得 5
  4. 更新score 保存 5

变量让程序用一个名字保存和访问数据。盒子比喻帮助我们看清“名字”和“当前值”是两回事。

score 可以一直叫 score,里面的数却从 3 变成 5。

01变量到底是什么?

在程序里,我们常常需要暂时记住一个数、一个字符或一个真假状态。

例如:玩家的分数、商品数量、年龄、是否通关……这些数据都可能在程序运行过程中变化。

变量(Variable)可以理解成:程序中有名字、可以保存某个值的数据对象。

名字

例如 score,方便程序找到它。

类型

例如 int,告诉程序它能保存什么数据。

例如 95,是当前保存的数据。

02怎样创建一个变量?

在 C++ 中,最简单的变量声明可以这样写:

int score;

int 表示变量的类型,score 是变量名。

如果一开始就给它一个值,可以写:

int score = 95;

03为什么变量需要名字?

名字让程序员能清楚地表达“这个数据是什么”。

不好的名字

ax1 —— 看不出用途。

更清楚的名字

scoreagestudentCount

变量名不是给 CPU “看懂含义”的,它主要帮助人编写和维护程序;编译后,名称可能不再以原样存在于机器代码中。

04变量的值为什么会变化?

变量之所以叫“变量”,就是因为它保存的值在允许的情况下可以改变。

int score = 10;
score = 20;
score = score + 5;

执行完以后,score 的值是 25

05所有数据都要放进变量吗?

不一定。程序中还有常量、字面量、表达式结果、对象、数组元素等各种形式的数据。

变量只是我们保存和操作数据时最常用的工具之一。

std::cout << 100;

这里的 100 是整数字面量,并没有先放进一个变量。

06变量什么时候存在?

变量不是“从程序出生到程序结束都一直存在”。不同变量有不同的生命周期

例如写在函数内部的局部变量,通常在执行进入它的作用域时开始存在,在离开作用域后结束生命周期。

你已经知道了什么

  • 变量是程序中有名字、能保存值的数据对象。
  • 变量通常有名字、类型和值。
  • “小盒子”可以帮助入门,但变量并不是真实盒子。
  • = 在 C++ 中常表示赋值,不是数学意义上的等号。
  • 变量有生命周期,并不是永远存在。

下一篇:变量在内存里住在哪里?

轮到你来试一试

把 score 改成 5 后,读取 score 会同时得到 3 和 5 吗?

想好了吗?点开看解释

不会,这个普通整数变量当前保存的是 5。若要保留历史分数,需要另外保存旧值。