程序的语句和结构

C++程序的语句和结构构成了程序的基本组成部分,它们用于实现程序的逻辑和功能。本章的目标是帮助您了解基本的 C++ 程序是如何构建的。到本章结束时,您将能够编写自己的简单程序。

为了使课程长度易于管理,主题可以分为几个后续课程。如果您觉得某个课程未涵盖某些重要概念,下一课可能会涵盖。

声明

计算机程序是告诉计算机要做什么的一系列指令。语句是一种使程序执行某些操作的指令。

语句是迄今为止 C++ 程序中最常见的指令类型。这是因为它们是 C++ 语言中最小的独立计算单元。在这方面,它们的作用很像自然语言中的句子。当我们想要向另一个人传达一个想法时,我们通常会用句子(而不是随机的单词或音节)来书写或说话。在 C++ 中,当我们想让程序做某事时,我们通常会编写语句。

C++ 中的大多数(但不是全部)语句以分号结尾。如果您看到以分号结尾的行,则它可能是一条语句。

在诸如C++之类的高级语言中,单个语句可以编译成许多机器语言指令。

C++ 中有多种不同类型的语句:

  1. 声明声明
  2. 跳转语句
  3. 表达式语句
  4. 复合语句
  5. 选择语句(条件)
  6. 迭代语句(循环)
  7. 尝试块

功能及主要功能

在 C++ 中,函数是按顺序(从上到下按顺序)执行的语句的集合当您学习编写自己的程序时,您将能够创建自己的函数并以您喜欢的任何方式混合和匹配语句(我们将在以后的课程中展示如何操作)。

程序通常在执行main函数中的最后一条语句后终止(完成运行) (尽管程序在某些情况下可能会提前中止,或者在之后进行一些清理)。

函数通常是为了完成特定的工作而编写的。例如,名为“max”的函数可能包含计算两个数字中哪一个更大的语句。名为“calculateGrade”的函数可以根据一组测试分数计算学生的成绩。我们很快就会更多地讨论函数,因为它们是程序中最常用的组织工具。

解剖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/

(0)
上一篇 2023年9月28日 下午11:14
下一篇 2023年9月29日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注