编写你的第一个 C++ 程序

C++C++Beginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,你将学习如何编写你的第一个 C++ 程序。你将从在 Ubuntu 22.04 上安装 GCC(GNU 编译器集合)并配置必要的环境变量开始。然后,你将创建一个新的 C++ 源文件,编写基本的程序结构,并使用 cout 语句打印 "Hello World" 消息。你还将学习如何编译和执行程序,以及如何添加单行和多行注释,使用 endl\n 进行换行,并修复常见的语法错误,如缺少分号。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("`C++`")) -.-> cpp/BasicsGroup(["`Basics`"]) cpp(("`C++`")) -.-> cpp/ControlFlowGroup(["`Control Flow`"]) cpp(("`C++`")) -.-> cpp/IOandFileHandlingGroup(["`I/O and File Handling`"]) cpp(("`C++`")) -.-> cpp/SyntaxandStyleGroup(["`Syntax and Style`"]) cpp/BasicsGroup -.-> cpp/variables("`Variables`") cpp/BasicsGroup -.-> cpp/strings("`Strings`") cpp/ControlFlowGroup -.-> cpp/if_else("`If...Else`") cpp/IOandFileHandlingGroup -.-> cpp/output("`Output`") cpp/IOandFileHandlingGroup -.-> cpp/user_input("`User Input`") cpp/IOandFileHandlingGroup -.-> cpp/files("`Files`") cpp/SyntaxandStyleGroup -.-> cpp/comments("`Comments`") cpp/SyntaxandStyleGroup -.-> cpp/code_formatting("`Code Formatting`") subgraph Lab Skills cpp/variables -.-> lab-446069{{"`编写你的第一个 C++ 程序`"}} cpp/strings -.-> lab-446069{{"`编写你的第一个 C++ 程序`"}} cpp/if_else -.-> lab-446069{{"`编写你的第一个 C++ 程序`"}} cpp/output -.-> lab-446069{{"`编写你的第一个 C++ 程序`"}} cpp/user_input -.-> lab-446069{{"`编写你的第一个 C++ 程序`"}} cpp/files -.-> lab-446069{{"`编写你的第一个 C++ 程序`"}} cpp/comments -.-> lab-446069{{"`编写你的第一个 C++ 程序`"}} cpp/code_formatting -.-> lab-446069{{"`编写你的第一个 C++ 程序`"}} end

在 Ubuntu 22.04 上安装 GCC 编译器并配置环境变量

在这一步骤中,你将学习如何在 Ubuntu 22.04 上安装用于 C++ 的 GCC(GNU 编译器集合)编译器并配置必要的环境变量。GCC 是编译和运行 C++ 程序所必需的。

首先,让我们在 WebIDE 中打开终端。你可以通过点击屏幕底部的终端图标或使用键盘快捷键(通常是 Ctrl+`)来打开终端。

我们将从更新软件包列表开始,以确保我们拥有关于可用软件包的最新信息:

sudo apt update

示例输出:

Hit:1 http://mirrors.cloud.aliyuncs.com/ubuntu jammy InRelease
Hit:2 http://mirrors.cloud.aliyuncs.com/ubuntu jammy-updates InRelease
Hit:3 http://mirrors.cloud.aliyuncs.com/ubuntu jammy-backports InRelease
Hit:4 http://mirrors.cloud.aliyuncs.com/ubuntu jammy-security InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
157 packages can be upgraded. Run 'apt list --upgradable' to see them.
终端更新命令输出

接下来,我们将安装 GCC 编译器及相关开发工具:

sudo apt install -y build-essential

示例输出:

Reading package lists...
Building dependency tree...
Reading state information...
build-essential is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 22 not upgraded.

要验证安装并检查 GCC 版本,请运行:

g++ --version

示例输出:

g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

GCC 编译器通常已经存在于系统的 PATH 中,因此不需要额外的配置。

创建带有 .cpp 扩展名的 C++ 源文件

在这一步骤中,你将学习如何创建一个带有 .cpp 扩展名的新 C++ 源文件。在 C++ 中,源文件使用 .cpp 扩展名来表示它们包含 C++ 代码。我们将使用 WebIDE 的文件资源管理器和文本编辑器来创建我们的第一个 C++ 源文件。

首先,在终端中导航到 ~/project 目录:

cd ~/project

现在,打开 WebIDE 的文件资源管理器。你会看到一个侧边栏,其中列出了文件和文件夹。找到一个允许你创建新文件的图标——它可能看起来像一个“+”号或“新建文件”选项。

在文件资源管理器中右键单击并选择“新建文件”。当提示时,将文件命名为 hello.cpp.cpp 扩展名至关重要,因为它告诉编译器和开发工具这是一个 C++ 源文件。

终端中的文件创建示例(供参考):

touch hello.cpp

点击新创建的 hello.cpp 文件以在 WebIDE 的文本编辑器中打开它。你将看到一个空文件,准备编写你的第一个 C++ 代码。

.cpp 扩展名的重要性在于:

  • 它标识文件为 C++ 源代码文件
  • 帮助开发工具和编译器识别文件类型
  • 将 C++ 文件与其他编程语言文件(如 .c(C)、.java(Java)或 .py(Python))区分开来

此时,你的 hello.cpp 文件已准备好开始编写 C++ 代码。在接下来的步骤中,你将学习如何在此文件中编写一个基本的 C++ 程序。

使用 int main() 函数编写基本程序结构

在这一步骤中,你将学习 C++ 程序的基本结构,重点是 main() 函数。每个 C++ 程序都必须有一个 main() 函数,它是程序开始执行的入口点。

打开你在之前步骤中创建的 hello.cpp 文件。我们现在将添加基本的程序结构:

#include <iostream>

int main() {
    // 你的代码将写在这里
    return 0;
}

注意: 建议手动输入代码以获得更好的学习效果。请注意大括号 { } 和分号 ;,因为它们在 C++ 语法中至关重要。不要忘记空格和缩进,否则步骤验证可能会失败。

让我们分解这个基本结构:

  1. #include <iostream>:这是一个预处理器指令,用于包含输入/输出流库。它允许我们使用输入和输出操作,例如打印到屏幕。
  2. int main():这是主函数的声明
    • int 指定函数将返回一个整数值
    • main() 是 C++ 程序的标准入口点
    • 空括号 () 表示该函数不接受任何参数
  3. 大括号 { }:定义函数的主体,你的代码将写在这里
  4. return 0;:表示程序成功完成
    • 返回 0 告诉操作系统程序运行没有错误
    • 这是 C++ 程序中的标准做法

WebIDE 会在你输入时自动保存更改。或者,你可以使用编辑器的保存选项手动保存文件。

如果你想了解更多关于 WebIDE 的信息,请查看 WebIDE 指南

一些需要记住的重要点:

  • 每个 C++ 程序都必须有一个 main() 函数
  • main() 函数是程序执行的起点
  • return 0; 语句通常用于表示程序成功执行

你可以将 main() 函数想象为旅程的起点。就像公路旅行从特定地点开始一样,C++ 程序从 main() 函数开始执行。

使用 cout 打印 Hello World 消息

在这一步骤中,你将学习如何使用 cout 将 "Hello, World!" 消息打印到屏幕上。cout 是 C++ 标准输入/输出库的一部分,用于显示输出。

在 WebIDE 中打开 hello.cpp 文件,并修改 main() 函数以包含以下代码:

#include <iostream>

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

让我们分解这行新代码:

  • std::cout:这是标准输出流对象
    • std:: 表示我们正在使用标准命名空间
    • cout 代表 "console output"(控制台输出)
  • <<:流插入运算符,用于将数据发送到输出流
  • "Hello, World!":我们想要打印的文本消息
  • std::endl:添加一个新行并刷新输出缓冲区
    • 确保消息立即显示
    • 将光标移动到下一行

保存文件时,请确保包含上面显示的完整结构。

关于 cout 的一些关键点:

  • 它用于将文本、数字和其他数据类型打印到屏幕上
  • << 运算符可以链接以打印多个项目
  • std::endl 用于在打印后创建新行

你可以将 cout 想象成一个向世界宣布你的消息的扩音器。<< 运算符帮助你加载消息,而 std::endl 确保每个人都能清楚地听到它。

使用 g++ hello.cpp -o hello 命令编译程序

在这一步骤中,你将学习如何使用 g++ 编译器编译你的 C++ 程序。编译是将人类可读的 C++ 源代码转换为计算机可以运行的可执行程序的过程。

在 WebIDE 中打开终端。确保你位于 ~/project 目录中:

cd ~/project

现在,让我们使用 g++ 命令编译你之前创建的 hello.cpp 文件:

g++ hello.cpp -o hello

让我们分解这个命令:

  • g++:GNU C++ 编译器
  • hello.cpp:你要编译的源文件
  • -o hello:指定输出可执行文件的名称
    • -o 是一个选项,允许你命名输出文件
    • hello 是你将创建的可执行文件的名称

示例输出:

## 没有输出意味着编译成功

如果编译成功,将不会显示任何错误消息。编译器会在同一目录中创建一个名为 hello 的可执行文件。

终端编译 C++ 代码

要验证编译结果,你可以检查目录中的文件:

ls

示例输出:

hello  hello.cpp

你现在应该看到两个文件:

  • hello.cpp:你的源代码文件
  • hello:编译后的可执行程序

一些重要的编译注意事项:

  • 如果代码中有任何错误,g++ 将显示错误消息
  • 在尝试运行程序之前,请始终检查并修复任何编译错误
  • -o 选项是可选的,但为可执行文件赋予一个有意义的名称是一个好习惯

你可以将编译过程想象成将一本书从一种语言翻译成另一种语言。g++ 编译器将你人类可读的 C++ 代码翻译成计算机可以理解和执行的语言。

使用 ./hello 命令执行程序

在这一步骤中,你将学习如何运行刚刚编译的可执行程序。编译完 C++ 程序后,你可以使用 ./ 命令后跟可执行文件的名称来执行它。

确保你位于 ~/project 目录中:

cd ~/project

要运行你在之前步骤中编译的程序,请使用以下命令:

./hello

./ 告诉系统在当前目录中查找可执行文件,而 hello 是你创建的可执行文件的名称。

示例输出:

Hello, World!

让我们分解一下发生了什么:

  • ./ 表示“在当前目录中”
  • 程序读取你编译的可执行文件中的指令
  • 它打印你在 C++ 源代码中定义的消息
  • 打印后,程序退出

一些重要的执行注意事项:

  • 在当前目录中运行程序时,始终在可执行文件名称前使用 ./
  • 程序必须具有执行权限(g++ 会自动提供)
  • 如果你没有看到输出,请仔细检查是否正确编译了程序

你可以将执行程序想象成启动汽车。编译是准备汽车,而运行程序是转动钥匙并驾驶。

如果你想多次运行程序,只需重复 ./hello 命令即可。

添加单行和多行注释

在这一步骤中,你将学习如何向 C++ 代码添加注释。注释是代码中的说明性文字,用于解释代码的功能。它们会被编译器忽略,但有助于提高代码的可读性。

在 WebIDE 中打开 hello.cpp 文件,并修改它以包含不同类型的注释:

#include <iostream>

// 这是一个单行注释
// 它解释了程序的功能

/*
这是一个多行注释
你可以编写多行解释
而无需担心为每一行添加 //
*/
int main() {
    // 打印问候消息
    std::cout << "Hello, World!" << std::endl;  // 解释输出的行内注释

    /*
    你也可以在代码中间
    使用多行注释(如果需要)
    */
    return 0;  // 向操作系统返回成功状态
}

让我们分解一下注释的类型:

  1. 单行注释:

    • // 开头
    • 延伸到行尾
    • 适合简短的说明
  2. 多行注释:

    • /* 开头
    • */ 结尾
    • 可以跨越多行
    • 适合较长的解释
  3. 行内注释:

    • 添加在代码行的末尾
    • 解释特定的代码行

编译并运行程序以验证它是否仍然正常工作:

g++ hello.cpp -o hello
./hello

示例输出:

Hello, World!

关于注释的一些关键点:

  • 注释使你的代码更易于理解
  • 它们帮助其他程序员(以及你自己)理解代码的目的
  • 编译器会完全忽略注释
  • 使用注释来解释“为什么”这样做,而不是“正在做什么”

你可以将注释想象成书中的便利贴。它们提供了额外的上下文和解释,而不会改变实际内容。

使用 endl 和 \n 进行换行

在这一步骤中,你将学习两种在 C++ 输出中创建换行的方法:std::endl 和换行符 \n。这两种方法都可以帮助你将输出格式化为多行。

在 WebIDE 中打开 hello.cpp 文件,并修改它以演示换行:

#include <iostream>

int main() {
    // 使用 std::endl 进行换行
    std::cout << "Hello, World!" << std::endl;
    std::cout << "Welcome to C++ Programming!" << std::endl;

    // 使用 \n 进行换行
    std::cout << "Using newline character:\n";
    std::cout << "Line 1\n";
    std::cout << "Line 2\n";

    // 混合使用两种方法
    std::cout << "Mixing methods: " << std::endl;
    std::cout << "Line with endl\n";
    std::cout << "Line with newline character" << std::endl;

    return 0;
}

👆 LabEx 小贴士: 点击代码块右下角的“Explain Code”与 Labby AI 聊天以获取代码解释。

让我们分解一下换行方法:

  1. std::endl

    • 添加一个新行
    • 刷新输出缓冲区(确保立即打印)
    • 属于 <iostream> 库的一部分
    • std::cout 一起使用
  2. \n(换行符):

    • 创建新行的简单方法
    • std::endl 更轻量
    • 适用于许多编程场景
    • 不会刷新输出缓冲区

编译并运行程序:

g++ hello.cpp -o hello
./hello

示例输出:

Hello, World!
Welcome to C++ Programming!
Using newline character:
Line 1
Line 2
Mixing methods:
Line with endl
Line with newline character

关键点:

  • std::endl\n 都可以创建新行
  • std::endl 更全面但稍慢
  • \n 更快且更轻量
  • 你可以混合使用这些方法

你可以将换行想象成书中的段落分隔符。它们有助于组织和结构化你的输出。

修复常见语法错误,例如缺少分号

在这一步骤中,你将学习 C++ 中的常见语法错误,重点关注缺少分号的问题。分号在 C++ 中至关重要,因为它们标志着语句的结束。

在 WebIDE 中创建一个名为 syntax_errors.cpp 的新文件:

cd ~/project
touch syntax_errors.cpp
#include <iostream>

int main() {
    // 常见语法错误:缺少分号
    std::cout << "This line has an error"  // 这里缺少分号!
    std::cout << "This line will not compile" << std::endl;

    // 正确版本,带有分号
    std::cout << "This line is correct" << std::endl;
    std::cout << "All statements end with a semicolon" << std::endl;

    return 0;  // 这里也不要忘记分号!
}

尝试编译程序:

g++ syntax_errors.cpp -o syntax_errors

示例编译错误:

syntax_errors.cpp: In function ‘int main()’:
syntax_errors.cpp:5:42: error: expected ‘;’ before ‘std’
    5 |     std::cout << "This line has an error"  // 这里缺少分号!
      |                                          ^
      |                                          ;
    6 |     std::cout << "This line will not compile" << std::endl;
      |     ~~~

关于分号的关键点:

  • C++ 中的每个语句都必须以分号 ; 结尾
  • 分号告诉编译器一条指令的结束和另一条指令的开始
  • 缺少分号会导致编译错误
  • 容易忘记分号的常见位置:
    • cout 语句之后
    • return 语句之后
    • 在变量声明的末尾

让我们修复这些错误:

  1. 添加缺少的分号
  2. 确保每个语句都以 ; 结尾

编译修正后的版本:

g++ syntax_errors.cpp -o syntax_errors
./syntax_errors

如果成功,将不会出现错误消息。

你可以将分号想象成句子中的句号。它们标志着代码中一个完整思想的结束。

总结

在本实验中,你将学习如何在 Ubuntu 22.04 上安装用于 C++ 的 GCC(GNU 编译器集合)编译器并配置必要的环境变量。你将创建一个新的 C++ 源文件,编写带有 int main() 函数的基本程序结构,并使用 cout 打印 "Hello World" 消息。然后,你将使用 g++ 命令编译程序并执行它。此外,你还将学习如何添加单行和多行注释,使用 endl\n 进行换行,以及修复诸如缺少分号之类的常见语法错误。

完成这些步骤后,你将为编写和运行你的第一个 C++ 程序打下坚实的基础,并了解在 Ubuntu 22.04 上进行 C++ 开发所需的基本工具和概念。

您可能感兴趣的其他 C++ 教程