> For the complete documentation index, see [llms.txt](https://langyo-v2.gitbook.io/cppworld/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://langyo-v2.gitbook.io/cppworld/di-yi-tan-xin-de-zheng-cheng/3-1.md).

# 第三章 · 计算术

首先我们来看一道极为简单的计算题：

> 1 + 1 = ?

我相信你读完这行算式的瞬间，就知道它等于 2 了。

那么，计算机是否也能做到瞬间算出它的结果呢？

当然能了！我们来试试用 C++ 让计算机算一算：

```c++
#include <iostream>
using namespace std;
int main()
{
	cout << 1 + 1 << endl;
    return 0;
}
```

我们在之前学到过，`cout`用于向控制台窗口写上你想写的内容，`endl`用于换行与刷新内容。如果你成功地执行了这道程序，可以看到控制台窗口中写了个 2。

是不是觉得太简单了？那就稍微复杂点吧：

> (147 + 258) × 369 - (550 + 233) ÷ 29 = ?

这种人类算起来颇为费事的式子，交给计算机仍然是轻而易举：

```c++
#include <iostream>
using namespace std;
int main()
{
	cout << (147 + 258) * 369 - (550 + 233) / 29 << endl;
    return 0;
}
```

当你将这行程序敲进计算机时，也许会发现乘号和除号有那么点不同——乘号用星号(\*)表达，除号则用斜杠(/)表达。

为什么会这样呢？其实是因为你的键盘上没有所谓的乘号与除号，哈哈\~几十年前设计键盘的工程师们脑洞大开，将星号作为乘号使用。而使用斜杠作为除号的原因还有一个：在数学中，除法还可以用分数的形式表示，所以这个斜杠其实就是横着写的分数线——左侧的被除数相当于分子，右侧的除数也就相当于分母。

好了，如果你成功地运行了这段代码，可以看到结果是 149437。

我们再深入些，尝试让计算机先接收我们输入的值，再根据我们提供的公式算出结果。

举个例子，要计算一个立方体的体积，我们可以用公式：

> 长 × 宽 × 高

设长为`a`，宽为`b`，高为`c`。我们可以写这样一道程序解决问题：

```c++
#include <iostream>
using namespace std;
int main()
{
	int a, b, c;				// 定义表达长宽高的三个整数类型的变量
    cin >> a >> b >> c;			// 输入三个变量的值
    cout << a * b * c << endl;	// 输出三个变量的乘积
    return 0;
}
```

这一次我们可以自己定义想使用的数字了。随便输入两组数字试试：

> \> 1 2 3
>
> < 6
>
> \> 23 3 3
>
> < 207

我们可以看到，计算机忠实地按照给定的数字与公式，算出了我们想要的结果。

像 `1 + 1`、`a + b + c`、`2 * (a * b + b * c + a * c)`（立方体表面积公式）这样的式子，我们可以统一称呼它们为表达式。表达式可以看作一个计算单元，包含若干个参与运算的对象（如数字、变量）和若干个运算符（如加号、乘号、小括号），对它求值会产生一个结果（如数字）。

表达式其实就是我们所熟知的算式、方程等再计算机学中的专用名称。实际上，就连`cout << ... << endl`这样的内容页同样是表达式，`cout`、`endl`同样是对象，`<<`也同样是运算符，我们将在后续的章节中深入学习。

### 习题

* 写一份用于求立方体表面积的程序，要求接收的三个数字分别存储在变量`a`、`b`、`c`中。
