我们身处一个充满理性与逻辑的世界。即便是市井小民,也难免要以这样的思维做事情:
- 早上起床后,先寻找自己的衣服穿上:
- 穿内衣了吗?嗯,昨晚睡觉时本来就没脱,不用再穿了。
- 穿上衣了吗?没有,那么就先穿上衣。
- 穿裤子了吗?也没有,赶紧穿上,记得系好裤腰带。
- 穿鞋子了吗?只穿了个拖鞋。但在穿拖鞋之前,好歹得穿个袜子吧?再检查一下:
- 穿袜子了吗?没有,先套上袜子。
- 然后再穿上鞋子。
- 戴手表了吗?等等,你没有买过表(假如)!那还是别戴了,总不能拿记号笔再手腕上画一个吧?哈哈~
其实,这就是程序,一个简单的早起穿衣程序,执行者也就是我们自己。
C++ 语言的用途,便是位我们手头的设备制定像这样的程序——能作出判断,并在不同的情况下做不同的事情。
接下来,我们便开始了解 C++ 是如何指挥计算机的。
0
这是什么?对,老相识了,还是数字零!
零是一个分界线,实数范围内,它既比任何正数小,又比任何负数大:
0 < 15
-3 < 0
计算机能判断这种事情吗?能!就像这样:
if (0 < 15)
{
cout << "0 小于 15 是正确的" << endl;
}
if (-3 < 0)
{
cout << "-3 小于 0 是正确的" << endl;
}
if 是 C++ 的一个关键字,含义是用于判断其后所跟小括号包裹的内容是否成立。如果成立,小括号后跟的一对花括号的内容会被执行,反之则不会被执行。
C++ 力求整洁,所以对于花括号内只有“一句话”的 if 语句,花括号是可以省略的:
if (0 < 15) cout << "0 小于 15 是正确的" << endl;
if(-3 < 0) cout << "-3 小于 0 是正确的" << endl;
别忘了末尾的分号!
if 语句中,由小括号包裹的内容称作条件;而如果小括号后紧跟的是一对花括号,我们称这一对花括号及其包裹的内容整体叫作语句块。
也许你会想,小括号里写的是条件,那么是不是什么条件都可以望着里头写呢?就像这样:
if (今天下雨) cout << "记得带伞!" << endl;
很遗憾,行不通。事实上,如果 C++ 智能得可以看得懂我们用自然语言写的句子,我们哪还要写什么程序呢?
计算机,正如其名,它是用来计算的机器,所以我们应当让它做的是计算!这种计算可以是数学层面的,例如四则运算或比较数字大小之类的:
if (3 + 2 == 5) cout << "3 加 2 为 5" << endl;
if (3 + 2 != 6) cout << "3 加 2 不为 6" << endl;
if (5 - 6 <= 12) cout << "5 减 6 的差不大于 12" << endl;
if (233 > 0) cout << "233 是一个正数" << endl;
也许你会对其中的==
、!=
与<=
感到奇怪。其实它们分别相当于数学中的等于(=)、不等于(≠)与小于等于(≤)。我们将在后续章节中深入学习像这样的运算符。
有时候,我们不仅需要处理条件成立时的情况,也需要处理条件不成立的情况:
if (12 > 0)
{
cout << "12 是正数" << endl;
}
else
{
cout << "12 不是正数" << endl;
}
else 是另一个 C++ 中的关键字,如果与它相匹配的 if 中的条件不成立,else 后跟的语句块会被执行。它与 if 正好相反,如果条件成立,语句块中的内容是不会被执行的。
当然了,它也能像 if 那样。如果语句块内同样只有“一句话”,else 后亦可省去花括号:
if (12 > 0) cout << "12 是正数" << endl;
else cout << "12 不是正数" << endl;
else 后还可紧跟一个新的 if,以便于进行连续的判断:
if (12 > 0) cout << "12 是正数" << endl;
else if (12 == 0) cout << "12 是 0" << endl;
else cout << "12 是负数" << endl;
if 和 else 究竟是凭什么判断条件是非的呢?
我们在 if 后那对小括号所写的各种条件,不论怎样,它们最终都会被转换为 true (真) 或 false (假) 这两种值。if 与 else 正是依靠于此实现判断的。
true 与 false 是什么呢?它们在 C++ 中被称作布尔值(bool),专用于表达逻辑上的真与假。它们不仅是像 if 与 else 那样的关键字,并且也和数字、字符串一样是值。
它们可以直接成为 if 的条件:
if (true) cout << "true" << endl;
if (false) cout << "false, 这句话永远也不会被执行……" << endl;
它们也同样是比较数字后的结果:
15 > 0; // true
15 < 0; // false
并且,它们还具有数值的性质,能直接参与比较运算中的相等与不相等运算:
12 > 11 == true; // true
12 > 25 == false; // true
12 > 25 != true; // true
12 > 25 == true; // false
布尔值是很有用的类型!我们将在后续的学习中经常用到它们。
- 构思一份生活中或游戏中做某一件具有流程的事情的全过程,要求至少有一处需要条件才能做(或不做)的步骤。