输入输出
如果你使用的是 Dev-cpp,将基本框架中的程序拷贝到代码区并按下 F11,你会发现程序已经可以成功地运行了!不过跳出的黑色窗口中没有任何内容——因为我们的 main 函数中什么都没写。我们现在来尝试输出一行 “hello world!":
#include <bits/stdc++.h>
int main ()
{
std::cout << "Hello World" << '\n'; // don't forget to add ';' at the end!
return 0;
}
cout
是一个对象 (object),作为初学者我们不需要知道对象是什么意思,一个好的理解方式是:你可以把 “cout” 想象成运行时蹦出的窗口,现在我们的任务是将要输出的内容喂给窗口,这里的 <<
就像箭头一样指明了数据的流向,“Hello World” 和代表换行符的 “\n” 依次流入 “cout” 并被显示出来,这就是 cout
的用法,颇有象形文字的智慧。
std::
这个前缀是什么意思?
std
是一个命名空间 (namespace)。对于初学者来说命名空间的概念太过复杂了,你可以把它当作“头文件”来理解:std
中有很多函数/对象/…可以供我们使用。在使用它们时,为了让计算机知道这个函数/对象/…来自于std
,我们要前面加上std::
这个前缀。一个自然的问题是:我们既然有一个 include 语句包含头文件,那么我们可不可以也用一条语句来“包含”
std
从而避免每次使用std
中的东西都要写std::
呢?答案是肯定的,我们可以这样写:#include <bits/stdc++.h> using namespace std;
第二行的意思是:在整个程序中我都可以任意地使用
std
这个 namespace 的所有内容,不再需要std::
这个前缀。这样写固然方便,但我们仍然推荐新手养成不滥用using namespace std;
的习惯,因为这样你能够更好地知道哪些函数是头文件中的,哪些函数是std
中的,这对将来的编程学习很有好处。
一个只能输出的程序没有意思,我们希望程序可以与人类交互,因此我们接下来考虑一个更复杂的例子:输入两个数,输出它们的和。我们直接给出示例代码:
#include <bits/stdc++.h>
int main ()
{
int a, b, sum;
std::cin >> a >> b; // don't forget the "std::" prefix!
sum = a + b;
std::cout << sum << '\n';
return 0;
}
这个程序颇为复杂,出现了很多新东西,我们来一一看:
- 程序中的
a
b
sum
被称为变量 (variable)。变量可以被理解为一个“小盒子“,里面可以存放一个值。在使用变量前我们需要定义变量,定义的格式是类型 变量名;
,这里我们定义了int
类型的变量,表示a
b
sum
这三个“盒子”里只能存放整数。 cin
是用于输入的对象。有了cout
的经验,cin
一行很好理解:我们还是将 “cin” 想象成黑色窗口,当我们输入了两个数字的时候,“cin” 需要将数据喂给变量,因此流符号的方向是>>
。sum = a + b;
是一个赋值语句,它的含义是将a
和b
中的值加起来,存放到sum
中,注意该操作不会影响a
和b
中的内容。
变量
上述示例代码中定义的是 int
型的变量 (“int"是整数 integer 的缩写)。C++ 为我们提供了很多的变量类型,比如存储小数(浮点数)的 float
类型和 double
类型,存储更大的整数的 long long
类型,存储字符的 char
类型等等,你可以上网搜索这些类型的含义。
除此之外,变量的命名看似自由,其实也有一定的约束条件,比如变量名的第一个字符不能是数字。如果你感兴趣,你也可以上网搜索相关的资料。