1.3 第一个程序:Hello World
环境搭建完成后,我们来编写第一个 C++ 程序。按照编程界的传统,从输出一行「Hello, World!」开始。
创建一个名为 hello.cpp 的文件,输入以下内容:
#include <iostream>
int main() { std::cout << "Hello, World!" << std::endl; return 0;}这段代码虽然只有几行,但包含了 C++ 程序的基本骨架。下面逐行分析。
#include <iostream>
Section titled “#include <iostream>”#include 是预处理指令(Preprocessor Directive),作用是将指定的头文件(Header File)的内容包含到当前文件中。<iostream> 是 C++ 标准库提供的输入输出流(Input/Output Stream)头文件,包含了 std::cout、std::cin 等常用的输入输出工具。
可以类比为:在正式写作之前,先声明「我需要用到输入输出相关的工具」。
int main()
Section titled “int main()”main 函数是每个 C++ 程序的入口点(Entry Point)。程序启动后,操作系统会自动调用这个函数。它的基本形式是:
int main() { // 程序代码 return 0;}int表示函数的返回值类型是整数main是函数名,这个名字是固定的,不能更改()表示函数不接受任何参数(后续章节会介绍带参数的形式){}花括号内是函数体,包含要执行的代码
std::cout << "Hello, World!" << std::endl;
Section titled “std::cout << "Hello, World!" << std::endl;”这一行完成了实际的输出工作:
std::cout是标准输出流对象(Console Output),它将数据输出到终端屏幕<<是插入运算符(Insertion Operator),将右侧的数据「送入」左侧的输出流"Hello, World!"是一个字符串字面量(String Literal),用双引号包裹std::endl表示换行并刷新输出缓冲区- 语句末尾的
;分号是 C++ 语句的结束标记,不可省略
其中 std:: 是命名空间(Namespace)限定符,表示 cout 和 endl 属于标准库命名空间 std。命名空间的具体概念会在后续章节详细讨论。
return 0;
Section titled “return 0;”return 0 表示程序正常结束。返回值 0 会传递给操作系统,通常约定 0 代表成功,非零值代表出错。
补充:代码中的注释
Section titled “补充:代码中的注释”在上述代码中,可能你注意到了 // 程序代码 这样的文字,这就是注释(Comments)。注释是写给程序员看的解释性文字,编译器会自动忽略它们,完全不会影响程序的运行。
C++ 支持两种注释方式:
1. 单行注释
Section titled “1. 单行注释”使用双斜线 // 开始,直到当前行结束的所有内容都会被当作注释:
int age = 18; // 这是一个单行注释,解释了 age 变量的含义// 这也是单行注释,通常放在代码上方std::cout << age;2. 多行注释
Section titled “2. 多行注释”使用 /* 开始,以 */ 结束,之间的所有内容都是注释,可以跨越多行:
/*这是一个多行注释的例子。通常用于详细的模块说明、复杂的逻辑解释,或者在调试时暂时停用一大段代码。*/int score = 100;小贴士:养成写标准注释的好习惯是非常重要的。好代码本身应该具有可读性(即所谓的“代码即文档”),但注释能帮助说明“为什么这么做”(Why),而不仅仅是“这是什么”(What)。
问:每行代码末尾都需要分号吗?
不是所有行都需要。预处理指令(以 # 开头的行)不需要分号,函数定义的花括号 } 后面也不需要。需要分号的是语句(Statement),比如变量声明、函数调用、返回语句等。
问:std:: 写起来太麻烦,能省略吗?
可以在文件开头添加 using namespace std;,之后就可以直接写 cout 和 endl。但在较大的项目中,这种做法可能引发命名冲突,因此本书的示例代码统一保留 std:: 前缀。