Hello,World
让我们先从一段最简单的 HelloWorld 程序说起
#include <iostream>
using namespace std;
int main() {cout << "Hello,World!" << endl;return 0;
}
在 IDE 运行这段代码,可以看到输出
Hello,World!
建议你先将这段代码记下来
接下来我们来拆解这段代码的含义
#include <iostream>
using namespace std;
这一段代码引用了头文件 iostream 并声明程序会使用标准命名空间(即 std),其中 iostream 包含了我们在第4行使用的 cout 语句,而这个 cout 正处在标准命名空间下
int main() {//省略return 0;
}
这是整个程序的主函数,每一个能编译运行的完整 C++ 代码都应该包含这一部分。当程序被运行时,程序就会从左到右,从上到下地逐行运行大括号里的语句,一直到 return 0。关于函数和 return 的知识会在之后进行讲解。你在这里可以先把在主函数里包含的 return 0 理解为正常退出程序。
cout << "Hello,World!" << endl;
接下来开始讲 C++ 的语法规则
注释
先提示说一嘴,如果你见到像这样的东西:
// 我叫单行注释
/*我叫多行注释(故名思意,我可以跨行)
*/
它们并不会被实际运行,它们仅仅只是注释。注释是用来帮助开发者(包括你自己)理解程序的,可以用 // 开启一行单行注释
// 现在在这里随便写都不会报错
用 /* 开始一段多行注释,用 */ 结束多行注释。但是多行注释不能嵌套
// 这其实是错的
/* 这是外面 /* 这是里面 */ */// 这才是对的
/* 这是第一段 /* 这是第二段 */
接下来我会多次使用注释进行注解,因此请务必牢记
分号作为结束符
如果你尝试过把 return 0 和 cout 语句挤到同一行:
#include <iostream>
using namespace std;
int main() {cout << "Hello,World!" << endl;return 0;
}
编译运行,你会发现程序依旧可以正常运行 震惊 Python 一百年!为什么?仔细观察原来的程序,你会发现这几条语句后面有个分号
#include <iostream>
using namespace std;
int main() {cout << "Hello,World!" << endl; // ← 这里!return 0; // ← 这里也有!
}
在 C++ 中,一个分号代表着一个语句的结束。可以说分号就是 C++ 中的结束符
使用 cout 输出
依旧是这段程序,尝试更改一下双引号内的内容
#include <iostream>
using namespace std;
int main() {cout << "Goodbye,World!" << endl;return 0;
}
再一次运行程序:
Goodbye,World!
在 C++ 中,我们通常使用 cout 进行输出。在下一章节我们会详细讲解
查看报错
写代码的过程并不是一帆风顺的,让我们先故意制造几个错误,来看看编译器有什么反应。我们先来把分号去掉,将其保存为 main.cpp 并尝试编译运行
#include <iostream>
using namespace std;
int main() {cout << "Hello,World!" << endlreturn 0
}
假如你和我一样使用 GCC(或者说是 MinGW)的话,你应该会看到类似的内容:

编译器这次给出了提示。它告诉你在 main.cpp 第 4 行第 35 个字符处附近有个错误(并且现在它还细心的用红箭头帮你指出了是哪里出错了)
main.cpp:4:35: error: expected ';' before 'return'
这句话的意思是,编译器希望在 return 前面找到分号,但是那里并没有分号
编译器一般都会指出你的语法错误(有时候它还会给出警告,那是后话了),这为我们 Debug 提供了极大的便利,所以在程序编译时关注报错信息至关重要。其实不同编译器的报错信息是不同的,如果你看不懂编译器的报错,你可以把它复制下来放到搜索引擎里面查一下。你大可自行修改程序,查看报错,然后进行搜索,我鼓励你这么做!因为这样做对你理解它们的作用有很大用途
总结
- C++ 输出 Hello,World 的程序长这个样子:
#include <iostream>
using namespace std;
int main() {cout << "Hello,World!" << endl;return 0;
}
其中第一行和第二行的作用是引用头文件 iostream 并声明程序会使用标准命名空间,下面的是主函数,代码会从主函数开始从左到右,从上到下逐行运行,第五行的 return 0 在这里的作用是正常退出程序
- 注释用来帮助理解程序,单行注释以
//开头,而多行注释以/*开头,*/结尾,多行注释不能嵌套 - C++ 中,';' 是结束符,标准着一条语句的结束
- 在这段程序中,cout 被用于输出
Hello,World!,在这里改变双引号内的内容可以改变输出内容 - 当程序出现错误时(准确来说是语法错误),编译器会报错,此时要根据报错信息修改程序
点我跳转到下一节:输入输出 从 0 开始的 C++ 之旅 1.2
