跳到主要内容

第一个程序

本课将教您如何编写第一个简单的 C++ 程序,该程序可以显示文本并执行简单的计算。

应用程序代码

我们在上一课结束时使用了以下代码

main.cpp
#include <iostream>

int main()
{
std::cout << "Hello, World!";
}
结果(控制台)
Hello, World!

它会在控制台中显示“Hello, World”文本。

解释

主函数

每个 C++ 程序都包含一段我们称之为主函数的代码。它是程序启动时运行的第一个1代码。

int main()
{

}

上面代码的第一行开始了函数定义。它由返回类型 int、名称 main 以及其括号 () 中的参数(在本例中为空)组成。虽然这些术语中的大多数现在并不重要,但您应该注意的唯一是名称 main。您的程序必须始终包含此格式指定的 main 函数。

还有其他变体

编写 main 函数有多种方法,但就目前而言,我们将坚持最简单的一种——我们上面展示的那种。有时您可能会看到以以下任一方式开始的 main 函数:

int main(int argc, char* argv[])
int main(int argc, char** argv)
auto main(int argc, char** argv) -> int
auto main() -> int

虽然可能还有更多变体,但它们都做同样的事情——它们定义了程序的入口点。我们将在未来介绍它们之间的区别。

代码块

程序知道 main 的开始和结束位置很重要。我们为此使用代码块。C++ 中的代码块是一组包含在大括号内的指令。

代码块的内容
outside
int main()
{
inside
}
outside

大括号之间的所有内容都算作代码块内的内容,其他所有内容都算作代码块外的。

执行顺序

main 函数包含由程序员提供的指令的代码块。计算机按顺序执行指令,或者更简单地说——逐行,从上到下。当程序运行时,main 中的第一行将被执行,然后是第二行,依此类推。

请记住

main 函数的内容是程序运行的第一段代码。

在下面的示例中,我们在 main 函数中放入了三条指令来演示执行顺序。您将在本课稍后了解更多关于 std::cout 的信息。

(paused) 1 的3
执行顺序预览
#include <iostream>

int main()
{
std::cout << "This is an instruction that displays text.";
std::cout << "And this is another instruction that displays text.";
std::cout << "This is the third instruction that displays text.";
}

iostream 头文件

Illustration on header file inclusion
#include 指令实际上做了什么?:)

在代码的最开始有一个行

#include <iostream>

这使我们可以使用 C++ 提供的标准输入输出工具。iostream 这个名字是 input/output stream(输入/输出流)的缩写。实际上,这将允许我们输出用户可以看到的文本,并接收输入文本来改变程序的行为。

iostream 这个名字指的是你磁盘上的一个头文件,它来自C++ 标准库。我们将在不久的将来更详细地解释它们和 #include。现在,请记住,在大多数情况下,我们在文件开头放置 #include <header_file>

控制台

“控制台”或“终端”是程序最基本的通信形式。它允许程序和用户之间进行简单的双向文本界面。您将非常熟悉这个工具,因为在您成为一名优秀程序员的旅程中,您将在每一步都使用它。

下面是一些在多种环境中运行相同代码的示例。

虽然并非所有终端都相同,但它们看起来会非常相似,仅显示简单的文本,几乎没有颜色。

🖼 概览:

正如您所见,许多代码编辑器,如 Visual Studio、VS Code、Replit.com、CLion、Vim 等,都内置了控制台。

向控制台打印文本

为了在控制台中显示文本,我们在 main 块内使用了以下语句:

std::cout << "Hello, World!";

cout 这个名字代表character output(字符输出)。它用于将文本发送到控制台。我们稍后会提到 std:: 前缀。

对于好奇的人

严格来说,cout 是一个所谓的字符输出流,它将内容写入标准输出,在本例中是您的控制台,但您现在不必记住这一点。

如果我们复制此行几次

std::cout << "Hello, World!1";
std::cout << "Hello, World!2";
std::cout << "Hello, World!3";

我们的输出将变为:

Hello, World!1Hello, World!2Hello, World!3
指令末尾的分号!

分号 (;) 用于分隔指令。编译器不关心指令是否写在不同的行上。分号被视为语句的结尾。因此,如下代码是可以接受的,但可读性很差。

std::cout << "Hello, World!1"; std::cout << "Hello, World!2"; std::cout << "Hello, World!3";

不要这样写代码!

上面创建的程序的呈现

请注意,文本被写入控制台时没有空格,在一行中,并在达到可用空间末尾时自动换行。

程序完全按照代码的指示执行——不多也不少。我们告诉它应该显示给定的字符……它就做了。我们必须显式地在正确的位置“换行”。这将导致后续字符从下一行的开头显示。为此,我们在文本中插入了一个特殊的换行符:\n,如下所示:

std::cout << "Hello, World!\n";
反斜杠

请注意,我们使用了反斜杠 (\n),而不是正斜杠 (/n)。

这是在添加换行符时程序的执行方式:

换行符

\n 序列在程序中代表一个字符。更多内容将在后面介绍。

标准命名空间前缀

std:: 是来自标准库命名空间的前缀,cout 就是从中来的。

初学者经常觉得输入 std:: 比较麻烦。如果我们提前给出适当的代码行,就可以省略它:

using 语句
#include <iostream>
int main()
{
using std::cout;
cout << "Hello, World!";
}

在包含 using std::cout; 的行之后,就不再需要 std:: 前缀来使用 cout 了。它会一直有效到当前代码块(在本例中是 main 函数)的末尾。

using namespace std

在许多其他在线教程和资源中,非常普遍的做法是在文件顶部使用:

using namespace std;

虽然这是 C++ 中的合法代码,但几乎所有有经验的 C++ 程序员都**强烈不建议**这样做。我们将在稍后讨论原因。目前,请优先使用我们之前提到的 using std::cout; 方法。

执行计算

编程用于自动化某些活动。例如,我们可以让计算机为我们做数学运算:

main.cpp
#include <iostream>
int main()
{
std::cout << "120 * 120 + 540";
}
结果(控制台)
120 * 120 + 540

请注意上面程序的输出结果!

文本 vs 指令

引号中的所有内容都被视为文本,而不是指令。

因此,我们得到的是我们在引号中输入的内容,而不是计算结果。要表示我们想要执行某个计算,我们需要移除引号:

main.cpp
#include <iostream>
int main()
{
std::cout << 120 * 120 + 540;
}
结果(控制台)
14940

启动程序后,我们将在代码中看到正确的计算结果。

数学运算符

  • + 将两个数字相加
  • - 将两个数字相减
  • * 将两个数字相乘
  • / 将两个数字相除
  • () 括号用于决定运算顺序

C++ 遵循您在学校可能学过的“PEMDAS”顺序。

  1. 首先是括号
  2. 然后是乘法/除法(从左到右)
  3. 最后是加法/减法(从左到右)

总结

您已经了解了第一个程序代码的结构。

提示

有关练习,请访问此页面

脚注

  1. 实际上,在 main 函数之前还有更多代码执行,主要用于设置程序,但这现在不重要。

第一个程序

本课将教您如何编写第一个简单的 C++ 程序,该程序可以显示文本并执行简单的计算。

应用程序代码

我们在上一课结束时使用了以下代码

main.cpp
#include <iostream>

int main()
{
std::cout << "Hello, World!";
}
结果(控制台)
Hello, World!

它会在控制台中显示“Hello, World”文本。

解释

主函数

每个 C++ 程序都包含一段我们称之为主函数的代码。它是程序启动时运行的第一个1代码。

int main()
{

}

上面代码的第一行开始了函数定义。它由返回类型 int、名称 main 以及其括号 () 中的参数(在本例中为空)组成。虽然这些术语中的大多数现在并不重要,但您应该注意的唯一是名称 main。您的程序必须始终包含此格式指定的 main 函数。

还有其他变体

编写 main 函数有多种方法,但就目前而言,我们将坚持最简单的一种——我们上面展示的那种。有时您可能会看到以以下任一方式开始的 main 函数:

int main(int argc, char* argv[])
int main(int argc, char** argv)
auto main(int argc, char** argv) -> int
auto main() -> int

虽然可能还有更多变体,但它们都做同样的事情——它们定义了程序的入口点。我们将在未来介绍它们之间的区别。

代码块

程序知道 main 的开始和结束位置很重要。我们为此使用代码块。C++ 中的代码块是一组包含在大括号内的指令。

代码块的内容
outside
int main()
{
inside
}
outside

大括号之间的所有内容都算作代码块内的内容,其他所有内容都算作代码块外的。

执行顺序

main 函数包含由程序员提供的指令的代码块。计算机按顺序执行指令,或者更简单地说——逐行,从上到下。当程序运行时,main 中的第一行将被执行,然后是第二行,依此类推。

请记住

main 函数的内容是程序运行的第一段代码。

在下面的示例中,我们在 main 函数中放入了三条指令来演示执行顺序。您将在本课稍后了解更多关于 std::cout 的信息。

(paused) 1 的3
执行顺序预览
#include <iostream>

int main()
{
std::cout << "This is an instruction that displays text.";
std::cout << "And this is another instruction that displays text.";
std::cout << "This is the third instruction that displays text.";
}

iostream 头文件

Illustration on header file inclusion
#include 指令实际上做了什么?:)

在代码的最开始有一个行

#include <iostream>

这使我们可以使用 C++ 提供的标准输入输出工具。iostream 这个名字是 input/output stream(输入/输出流)的缩写。实际上,这将允许我们输出用户可以看到的文本,并接收输入文本来改变程序的行为。

iostream 这个名字指的是你磁盘上的一个头文件,它来自C++ 标准库。我们将在不久的将来更详细地解释它们和 #include。现在,请记住,在大多数情况下,我们在文件开头放置 #include <header_file>

控制台

“控制台”或“终端”是程序最基本的通信形式。它允许程序和用户之间进行简单的双向文本界面。您将非常熟悉这个工具,因为在您成为一名优秀程序员的旅程中,您将在每一步都使用它。

下面是一些在多种环境中运行相同代码的示例。

虽然并非所有终端都相同,但它们看起来会非常相似,仅显示简单的文本,几乎没有颜色。

🖼 概览:

正如您所见,许多代码编辑器,如 Visual Studio、VS Code、Replit.com、CLion、Vim 等,都内置了控制台。

向控制台打印文本

为了在控制台中显示文本,我们在 main 块内使用了以下语句:

std::cout << "Hello, World!";

cout 这个名字代表character output(字符输出)。它用于将文本发送到控制台。我们稍后会提到 std:: 前缀。

对于好奇的人

严格来说,cout 是一个所谓的字符输出流,它将内容写入标准输出,在本例中是您的控制台,但您现在不必记住这一点。

如果我们复制此行几次

std::cout << "Hello, World!1";
std::cout << "Hello, World!2";
std::cout << "Hello, World!3";

我们的输出将变为:

Hello, World!1Hello, World!2Hello, World!3
指令末尾的分号!

分号 (;) 用于分隔指令。编译器不关心指令是否写在不同的行上。分号被视为语句的结尾。因此,如下代码是可以接受的,但可读性很差。

std::cout << "Hello, World!1"; std::cout << "Hello, World!2"; std::cout << "Hello, World!3";

不要这样写代码!

上面创建的程序的呈现

请注意,文本被写入控制台时没有空格,在一行中,并在达到可用空间末尾时自动换行。

程序完全按照代码的指示执行——不多也不少。我们告诉它应该显示给定的字符……它就做了。我们必须显式地在正确的位置“换行”。这将导致后续字符从下一行的开头显示。为此,我们在文本中插入了一个特殊的换行符:\n,如下所示:

std::cout << "Hello, World!\n";
反斜杠

请注意,我们使用了反斜杠 (\n),而不是正斜杠 (/n)。

这是在添加换行符时程序的执行方式:

换行符

\n 序列在程序中代表一个字符。更多内容将在后面介绍。

标准命名空间前缀

std:: 是来自标准库命名空间的前缀,cout 就是从中来的。

初学者经常觉得输入 std:: 比较麻烦。如果我们提前给出适当的代码行,就可以省略它:

using 语句
#include <iostream>
int main()
{
using std::cout;
cout << "Hello, World!";
}

在包含 using std::cout; 的行之后,就不再需要 std:: 前缀来使用 cout 了。它会一直有效到当前代码块(在本例中是 main 函数)的末尾。

using namespace std

在许多其他在线教程和资源中,非常普遍的做法是在文件顶部使用:

using namespace std;

虽然这是 C++ 中的合法代码,但几乎所有有经验的 C++ 程序员都**强烈不建议**这样做。我们将在稍后讨论原因。目前,请优先使用我们之前提到的 using std::cout; 方法。

执行计算

编程用于自动化某些活动。例如,我们可以让计算机为我们做数学运算:

main.cpp
#include <iostream>
int main()
{
std::cout << "120 * 120 + 540";
}
结果(控制台)
120 * 120 + 540

请注意上面程序的输出结果!

文本 vs 指令

引号中的所有内容都被视为文本,而不是指令。

因此,我们得到的是我们在引号中输入的内容,而不是计算结果。要表示我们想要执行某个计算,我们需要移除引号:

main.cpp
#include <iostream>
int main()
{
std::cout << 120 * 120 + 540;
}
结果(控制台)
14940

启动程序后,我们将在代码中看到正确的计算结果。

数学运算符

  • + 将两个数字相加
  • - 将两个数字相减
  • * 将两个数字相乘
  • / 将两个数字相除
  • () 括号用于决定运算顺序

C++ 遵循您在学校可能学过的“PEMDAS”顺序。

  1. 首先是括号
  2. 然后是乘法/除法(从左到右)
  3. 最后是加法/减法(从左到右)

总结

您已经了解了第一个程序代码的结构。

提示

有关练习,请访问此页面

脚注

  1. 实际上,在 main 函数之前还有更多代码执行,主要用于设置程序,但这现在不重要。