输入输出
如果你使用的是 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;
}
这个程序颇为复杂,出现了很多新东西,我们来一一看:
- 程序中的
absum被称为变量 (variable)。变量可以被理解为一个“小盒子“,里面可以存放一个值。在使用变量前我们需要定义变量,定义的格式是类型 变量名;,这里我们定义了int类型的变量,表示absum这三个“盒子”里只能存放整数。 cin是用于输入的对象。有了cout的经验,cin一行很好理解:我们还是将 “cin” 想象成黑色窗口,当我们输入了两个数字的时候,“cin” 需要将数据喂给变量,因此流符号的方向是>>。sum = a + b;是一个赋值语句,它的含义是将a和b中的值加起来,存放到sum中,注意该操作不会影响a和b中的内容。
变量
上述示例代码中定义的是 int 型的变量 (“int"是整数 integer 的缩写)。C++ 为我们提供了很多的变量类型,比如存储小数(浮点数)的 float 类型和 double 类型,存储更大的整数的 long long 类型,存储字符的 char 类型等等,你可以上网搜索这些类型的含义。
除此之外,变量的命名看似自由,其实也有一定的约束条件,比如变量名的第一个字符不能是数字。如果你感兴趣,你也可以上网搜索相关的资料。