创建程序

在学习如何配置开发环境之后我们的首要任务就是编写一些简单的代码来测试我们的开发环境是否能够正常运行,同时也是为了能够让我们完成从编程世界的路人到初学者的转变体验。

编写代码

接下来我们分为几个详细的步骤来开发属于我们自己的程序。

打开代码编辑器 (IDE/文本编辑器) 编写如下代码:

#include <iostream>

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

编译代码

将写完的代码保存后缀为 “.CPP” 或 “.cpp” 的文件(代码文件的后缀可根据自己的习惯选择大写或小写,但需要注意的是同一项目中的所有代码文件后缀要统一大写或统一小写,如果大小写混合可能会导致编译错误!) ,保存文件时,建议使用 UTF-8 编码,以避免后续可能出现的中文乱码问题。

保存完成之后打开终端输入如下命令:

g++ 你的代码文件名称.CPP -o 生成出来的程序名称(最好与代码文件名称相同)

# 按下回车然后接着输入如下命令:
./你的程序名称

编译实战演示:

假设我的代码文件名称为 HelloWorld.CPP

g++ HelloWorld.CPP -o HelloWorld
./HelloWorld

当输入完最后一行命令时按下回车,不出意外的话你会在终端上看见这样一行字

Hello World!

如果你使用的是 Visual Studio、CLion、Qt Creator 等 IDE,通常不需要手动输入命令行,只需点击 IDE 中的 “运行” 或 “构建并运行” 按钮即可完成编译和执行。

初识代码

接下来我们逐行认识每一段代码为我们后续的学习打下基础。

第一行: #include 这是 C++ 中的预处理指令,预处理器在编译器真正编译代码之前运行,它的作用是告知编译器,在编译过程中将我们在代码中所用到的一些头文件/工具库包含到当前的程序当中。 <iostream> 它是 C++ 中的一个标准库头文件,它包含了输入/输出流(Input/Output Stream)等功能,以便在程序中进行输入和输出操作。

第二行: 一行没有任何内容的空行,它对代码没有任何影响编译器会忽略空行。旨在提升代码的美观和可读性。

第三行: int 它是 C++ 中用于表达整数的数据类型,在上方代码中和 main() 组成了一个函数,int 代表了这个程序入口函数的返回值的类型。main() 函数它是程序的入口函数,操作系统通过调用这个函数来启动程序。程序的执行从 main() 函数开始,在每个程序当中都必须有且仅有一个 main() 函数,如果一个 C++ 程序出现了两个及两个以上的 main() 函数则程序会无法编译。C++ 标准明确规定 main() 函数的返回类型必须是 int,不允许声明为 voidmain() 函数返回的整数值会传递给操作系统,通常用来表示程序的退出状态。0 通常表示程序是正常关闭的,非零值表示有错误或异常情况。

第三与第六行: { } 花括号在 C++ 中都是成对出现的,有开头就必须有结尾。在函数中的花括号代表了函数体,在花括号内部的代码都⾪属于同⼀个函数,在调⽤此函数时花括号内部的代码会按照出现的先后顺序来依次执⾏。

第四行: std::cout 是 C++ 标准库中的⼀个输出流对象,它属于 <iostream> 头⽂件。std::cout 通常⽤于在标准输出设备(通常是屏幕或控制台)上输出数据。它是 std 命名空间中的⼀个成员,因此在使⽤时需要包含 std 前缀,除⾮你已经在⽂件顶部使⽤了 using namespace std; 声明。std::cout 与运算符 << ⼀起使⽤,可以将各种类型的数据(如整数、浮点数、字符串、字符等)发送到标准输出流。std::endl C++ 标准库中的⼀个操纵符(manipulator),它也属于 <iostream> 头⽂件。当与输出流如 std::cout ⼀起使⽤时,std::endl 会完成两件事:插⼊换⾏符:它会在输出流中插⼊⼀个换⾏符(\n),这通常⽤于在控制台或⽂件中创建新的⼀⾏。刷新输出缓冲区:除了插⼊换⾏符之外,std::endl 还会⽴即刷新与输出流关联的缓冲区。这意味着所有待处理的输出都会⽴即被发送到它们的⽬的地(如控制台或⽂件),⽽不是等待缓冲区填满或程序结束。注意:频繁使用std::endl 可能会影响性能,因为每次都会强制刷新缓冲区;如果只需要换行不需要立即刷新,可以使用 ‘\n’ 代替。

第五行: return 0; 其中的 return 在 C++ 中表示返回操作,当代码执⾏到 return 语句时,它会⽴即停⽌执⾏当前的函数体,并将控制权返回给调⽤该函数的地⽅。如果 return 语句后⾯跟着⼀个值(这个值的类型必须与函数的返回类型兼容),那么这个值将被返回给调⽤者。如果一个函数是 void 类型的,那么 return 语句后⾯通常不会跟任何值。在 main 函数中,return 语句通常⽤于返回程序的退出状态。

小技巧

事实上在 C++ 98 标准也就是第一个正式标准发布的时候,程序的主函数 int main() 就已经可以不使用 return 语句了。当程序在主函数结束时未遇到返回语句则默认执行返回语句,它等价于 return 0;.

转义序列

C++ 支持使用转义序列表示特殊字符

#include <iostream>

int main() {
    std::cout << "Hello\tWorld!\n";  // \t 制表符,\n 换行符
    std::cout << "Hello\\World!\n";  // \\ 反斜杠
    std::cout << "Hello\"World!\"\n"; // \" 双引号
    std::cout << "Hello\'World!\'\n"; // \' 单引号
    std::cout << "Hello\0World!\n";   // \0 空字符(字符串结束符)
}