《C++游戏编程入门(第4版)》——1.2 编写第一个C++程序

简介:

本节书摘来自异步社区出版社《C++游戏编程入门(第4版)》一书中的第1章,第1.2节,作者:【美】Michael Dawson(道森),更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.2 编写第一个C++程序

C++游戏编程入门(第4版)
到此为止,我们已经介绍了足够多的理论知识。现在来实践编写第一个C++程序。麻雀虽小,五脏俱全。该程序同样演示了在控制台窗口中显示文本的方法。

1.2.1 Game Over程序简介

程序员在学习新语言时,编写的第一个程序便是经典的Hello World程序,在屏幕上显示Hello World。Game Over程序打破了这个传统,显示的是Game Over!。该程序的运行结果如图1.2所示。


16ad19486be1594c7dc054c84bcaf6bf3618aedf

图1.2 您的第一个C++程序显示的是计算机游戏中名声最差的两个单词

从Cengage Learning网站(www.cengageptr.com/downloads)上可以下载该程序的代码。程序位于文件夹Chapter 1中,文件名为game_over.cpp。

提示
 在网站www.cengageptr.com/downloads上可以搜索本书,下载本书程序的全部源代码。可以使用本书的ISBN号9781305109919来搜索。

// Game Over
// A first C++ program
#include <iostream>
int main()
{
   std::cout << "Game Over!" << std::endl;
   return 0;
}```
###1.2.2 注释
程序的前两行是注释。

// Game Over
// A first C++ program`
注释是给程序员看的,编译器完全忽略。注释可以帮助其他程序员理解程序作者的意图。它也对程序作者本身有帮助。对于程序员曾使用晦涩的代码完成的工作,它能帮助程序员回忆起代码的含义。

注释以两个连续的斜线(//)开始,其后的部分即为注释部分。这意味着我们可以在同一行中某一块C++代码后面添加注释。

提示
 我们还可以使用C风格注释,将注释扩展到多行。所要做的只是把注释以/开头,并以/结尾。任何处于这两个记号之间的文本都是注释部分。

1.2.3 使用空白字符

程序Game Over中注释以下是一个空白行。编译器会忽略空白行。实际上,编译器忽略所有的空白字符——空格、制表符和换行符。和注释一样,空白字符只是给程序员看的。

空白字符使用得当可以让程序更加清晰易懂。例如,空白行可以用于分隔属于一起的代码块。该程序的代码也将空白字符(准确地说是制表符)置于花括号中两行的起始位置,作为每一行的开始。

1.2.4 包含其他文件

程序中接下来的一行是预处理器指令。预处理器指令以#符号开头。
`

include `

预处理器 在编译之前运行,并基于各种指令进行文本替换。在本例中,含有#include指令的这一行代码告诉预处理器将另一个文件的内容包含进来。

程序中包含了作为标准库一部分的iostream文件,因为其中有用于显示输出的 代码。

文件名两端的小于号(<)和大于号(>)告诉编译器在其自带文件中查找需要的文件。像这样包含在程序中的文件称为头文件。

1.2.5 定义main()函数
接下来的非空白行是一个名为main()的函数头。
`
int main()`
函数 是指一组程序代码,它能完成某种任务并返回一个值。在本程序中,int表示函数将返回一个整型值。所有函数头在函数名后面都有一对圆括号。

所有C++程序都必须有一个名为main()的函数作为程序的起始点。程序是从这里开始运行的。

下面一行标记函数的开始。
`
{`
程序的最后一行标记函数的结束。
`
}`
所有函数都被一对花括号括起来。花括号里面的代码都属于函数。两个花括号之间的代码称为代码块。代码块通常会缩进显示,表示它形成了一个代码单元。构成整个函数的代码块称为函数体。

1.2.6 通过标准输出显示文本
main()函数体的第一行在控制台窗口显示Game Over!和一个换行符。

   std::cout << "Game Over!" << std::endl;
"Game Over!"是字符串,即一连串可以打印的字符。从技术上而言,它是一个字符串字面值,即它就是引号中间的那些字符。```

cout是在iostream文件中定义的对象,用于向标准输出流发送数据。在大多数程序中(包括本程序),标准输出流仅仅是指计算机屏幕中的控制台窗口。

输出运算符(<<)用于向对象cout发送字符串。可以将输出运算符想象成一个漏斗,它将开口一端的数据收集起来并使其流向收口的一端。所以字符串顺着漏斗流向了标准输出——屏幕。

cout的前缀std告诉编译器这里的cout来自标准库。std是名称空间。可以将名称空间想象成电话号码的区号,它唯一标识了成员所属的组。名称空间后面跟着作用域解析运算符(::)。

最后,程序还向标准输出发送了std::endl。endl在iostream中定义,它也是std名称空间中的一个对象。向标准输出发送endl类似于在控制台窗口中按下回车键。实际上,如果此时向控制台窗口发送另一个字符串,它将出现在屏幕的下一行。

这些概念可能有些难以理解。请看图1.3所示,它以图形方式形象地表示了所有描述过的元素之间的关系。
()<div style="text-align: center">
 <img src="https://yqfile.alicdn.com/4e09f849b8859f5c9a28ba5b1c5268c400d9de07.png" >
</div>

图1.3 标准C++的实现包含了一个称为标准库的文件集合,
标准库包含了iostream文件,iostream文件又包含了各种定义,其中包括cout对象的定义

###1.2.7 语句的终止
如果留意函数的第一行,会发现它以一个分号(;)结尾。这是因为这一行是一条语句——控制程序执行流程的基本单元。所有语句都必须以分号结尾,否则编译器会报错,而且不会编译程序。

###1.2.8 从main()函数返回值
函数的最后一条语句将0返回给操作系统。

 `  return 0;`
从main()函数返回0表示程序正常结束。操作系统与返回值无关。一般来说,可以像该程序一样简单地返回0。

技巧
 在运行Game Over程序时,可能只是看见控制台窗口一闪而过。那是因为C++太快,它在不到一秒的时间内打开一个控制台窗口,显示Game Over!,然后关闭窗口。然而,在Windows操作系统下,可以创建批处理文件,在运行控制台程序后暂停。这可以保持控制台窗口处于打开状态,以便查看程序结果。因为编译后的程序名为game_over.exe,所以可以简单地创建由以下两行代码组成的批处理文件:*
`
game_over.exe
pause`
创建批处理文件的步骤如下:

(1)打开一个文本编辑器,如Notepad(不能是Word或WordPad)。

(2)输入文本。

(3)把这个文件保存到和game_over.exe文件相同的文件夹中。以.bat扩展名保存文件,如game_over.bat。

最后,双击文件图标运行批处理文件。因为批处理文件会使控制台窗口处于打开状态,这时应当能看到程序结果。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。
相关文章
|
1月前
|
编译器 C++
C++入门12——详解多态1
C++入门12——详解多态1
38 2
C++入门12——详解多态1
|
1月前
|
存储 程序员 编译器
简述 C、C++程序编译的内存分配情况
在C和C++程序编译过程中,内存被划分为几个区域进行分配:代码区存储常量和执行指令;全局/静态变量区存放全局变量及静态变量;栈区管理函数参数、局部变量等;堆区则用于动态分配内存,由程序员控制释放,共同支撑着程序运行时的数据存储与处理需求。
101 21
|
1月前
|
编译器 C语言 C++
C++入门3——类与对象2-2(类的6个默认成员函数)
C++入门3——类与对象2-2(类的6个默认成员函数)
23 3
|
1月前
|
C++
C++入门13——详解多态2
C++入门13——详解多态2
79 1
|
1月前
|
程序员 C语言 C++
C++入门5——C/C++动态内存管理(new与delete)
C++入门5——C/C++动态内存管理(new与delete)
67 1
|
1月前
|
编译器 C语言 C++
C++入门4——类与对象3-1(构造函数的类型转换和友元详解)
C++入门4——类与对象3-1(构造函数的类型转换和友元详解)
19 1
|
1月前
|
存储 编译器 C++
C++入门3——类与对象2-1(类的6个默认成员函数)
C++入门3——类与对象2-1(类的6个默认成员函数)
30 1
|
1月前
|
编译器 C语言 C++
C++入门6——模板(泛型编程、函数模板、类模板)
C++入门6——模板(泛型编程、函数模板、类模板)
41 0
C++入门6——模板(泛型编程、函数模板、类模板)
|
1月前
|
存储 安全 编译器
【C++打怪之路Lv1】-- 入门二级
【C++打怪之路Lv1】-- 入门二级
23 0
|
1月前
|
自然语言处理 编译器 C语言
【C++打怪之路Lv1】-- C++开篇(入门)
【C++打怪之路Lv1】-- C++开篇(入门)
24 0