C++程序的语句和结构构成了程序的基本组成部分,它们用于实现程序的逻辑和功能。本章的目标是帮助您了解基本的 C++ 程序是如何构建的。到本章结束时,您将能够编写自己的简单程序。
为了使课程长度易于管理,主题可以分为几个后续课程。如果您觉得某个课程未涵盖某些重要概念,下一课可能会涵盖。
声明
计算机程序是告诉计算机要做什么的一系列指令。语句是一种使程序执行某些操作的指令。
语句是迄今为止 C++ 程序中最常见的指令类型。这是因为它们是 C++ 语言中最小的独立计算单元。在这方面,它们的作用很像自然语言中的句子。当我们想要向另一个人传达一个想法时,我们通常会用句子(而不是随机的单词或音节)来书写或说话。在 C++ 中,当我们想让程序做某事时,我们通常会编写语句。
C++ 中的大多数(但不是全部)语句以分号结尾。如果您看到以分号结尾的行,则它可能是一条语句。
在诸如C++之类的高级语言中,单个语句可以编译成许多机器语言指令。
C++ 中有多种不同类型的语句:
- 声明声明
- 跳转语句
- 表达式语句
- 复合语句
- 选择语句(条件)
- 迭代语句(循环)
- 尝试块
功能及主要功能
在 C++ 中,函数是按顺序(从上到下按顺序)执行的语句的集合。当您学习编写自己的程序时,您将能够创建自己的函数并以您喜欢的任何方式混合和匹配语句(我们将在以后的课程中展示如何操作)。
每个 C++ 程序都必须有一个名为main的特殊函数(全部小写字母)。程序运行时,main内部的语句按顺序执行。
程序通常在执行main函数中的最后一条语句后终止(完成运行) (尽管程序在某些情况下可能会提前中止,或者在之后进行一些清理)。
函数通常是为了完成特定的工作而编写的。例如,名为“max”的函数可能包含计算两个数字中哪一个更大的语句。名为“calculateGrade”的函数可以根据一组测试分数计算学生的成绩。我们很快就会更多地讨论函数,因为它们是程序中最常用的组织工具。
在讨论函数时,在函数名称末尾添加一对括号是相当常见的简写。例如,如果您看到术语
main()或doSomething(),则这分别是名为main或doSomething的函数的简写。
这有助于将函数与其他有名称的事物(例如变量)区分开来,而不必每次都写“函数”一词。
解剖Hello World!
现在您已经简要了解了什么是语句和函数,让我们返回到“Hello world”程序并更详细地了解每行的功能。
#include <iostream>
int main()
{
std::cout << "Hello world!";
return 0;
}
第 1 行是一种特殊类型的行,称为预处理器指令。这个预处理器指令表明我们想要使用 iostream 库的内容,它是 C++ 标准库的一部分,允许我们从控制台读取文本或向控制台写入文本。我们需要这一行才能在第 5 行使用 std::cout。排除这一行将导致第 5 行出现编译错误,因为编译器不会知道 std::cout 是什么。
第 2 行是空白,被编译器忽略。此行的存在只是为了帮助使程序更易于人类阅读(通过分隔 #include 预处理器指令和程序的后续部分)。
第 3 行告诉编译器我们将编写(定义)一个名为main的函数。正如您在上面了解到的,每个 C++ 程序都必须有一个main函数,否则它将无法链接。
第 4 行和第 7 行告诉编译器哪些行是main函数的一部分。第 4 行的左大括号和第 7 行的右大括号之间的所有内容都被视为main函数的一部分。这称为函数体。
第 5 行是main函数中的第一条语句,也是我们运行程序时将执行的第一条语句。std::cout(代表“字符输出”)和<<
运算符允许我们在控制台上显示信息。在本例中,我们显示文本“Hello world!”。该语句创建程序的可见输出。
第 6 行是返回语句。当可执行程序完成运行时,程序会将一个值发送回操作系统,以指示其运行是否成功。这个特定的 return 语句向操作系统返回 0 值,这意味着“一切顺利!”。这是程序中执行的最后一条语句。
我们编写的所有程序都将遵循这个通用模板或其变体。
你可以自己编译并运行这个程序,你会看到它在控制台输出以下内容:
Hello world!
如果您在编译或执行该程序时遇到问题,请查看一些常见的 C++ 问题。
语法和语法错误
在英语中,句子是根据您可能在学校英语课上学到的特定语法规则构建的。例如,正常的句子以句号结尾。控制如何用语言构造句子的规则称为语法。如果您忘记句号并将两个句子连在一起,则违反了英语语法。
C++ 也有语法:关于程序必须如何构造才能被视为有效的规则。当您编译程序时,编译器负责确保您的程序遵循 C++ 语言的基本语法。如果您违反了规则,编译器会在您尝试编译程序时发出抱怨,并向您发出语法错误。
让我们看看如果省略“Hello world”程序第 5 行的分号会发生什么,如下所示:
#include <iostream>
int main()
{
std::cout << "Hello world!"
return 0;
}
请随意自己编译这个格式错误的程序。
Visual Studio 会生成以下错误(您的编译器可能会生成具有不同措辞的错误消息):
c:\vcprojects\test1.cpp(6): error C2143: syntax error : missing ';' before 'return'
这告诉您第 6 行有语法错误:编译器期望在 return 语句之前有一个分号,但没有找到。尽管编译器会告诉您遇到语法错误时它正在编译哪一行代码,但实际上遗漏的地方可能是在前一行。在本例中,错误实际上出现在第 5 行末尾(编译器直到第 6 行才发现问题)。
编写程序时语法错误很常见。幸运的是,它们通常很容易找到和修复,因为编译器通常会直接指出它们。只有解决所有语法错误后,程序的编译才会完成。
您可以尝试从“Hello world”程序中删除字符甚至整行,以查看生成的不同类型的错误。尝试恢复第 5 行末尾丢失的分号,然后删除第 1、3 或 4 行,看看会发生什么。
原创文章,作者:jkhxw,如若转载,请注明出处:https://www.jkhxw.com/cpp-statements-and-the-structure/