本节书摘来自异步社区出版社《C++入门经典(第6版)》一书中的第2章,第2.2节,作者: 【美】Rogers Cadenhead(罗格斯 卡登海德) , Jesse Liberty(杰西 立波提) ,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.2 程序的组成部分

您在第1章创建的程序Motto.cpp包含C++程序的基本框架。程序清单2.1再次列出了该程序的源代码,以便详细探索。

在编程编辑器(如NetBeans)中输入该程序时,记住不要包含其中的编号,提供它们旨在方便引用代码行。

程序清单2.1 Motto.cpp的完整源代码

1: #include
2:
3: int main()
4: {
5: std::cout << "Solidum petit in profundis!n";
6: return 0;
7: }
这个程序生成一行输出——奥尔胡斯大学的校训:

Solidum petit in profundis!
在程序清单2.1中,第 1 行包含了一个名为iostream的文件,导致编译器认为在这个地方输入的是文件iostream的全部内容。

2.2.1 预处理器编译指令

C++编译器执行的第一项操作是,调用另一个被称为预处理器的工具对源代码进行检查,这是在编译器每次运行时自动进行的。

在第1行,第一个字符是符号#,它指出这行是一个将由预处理器处理的命令。这些命令称为预处理器编译指令。预处理器的职责是,阅读代码,查找编译指令并根据编译指令相应地修改代码。修改后的代码将提供给编译器。

预处理器相当于编译前的代码编辑,每条编译指令都是一个命令,告诉这位编辑如何做。

编译指令#include告诉预处理器,将指定文件的全部内容加入到程序的指定位置。第1章说过,C++提供了一个标准的源代码库,您可在程序中使用它们来执行有用的功能。文件iostream中的代码支持输入输出任务,如在屏幕上显示信息以及从用户那里接受输入。

文件名iostream前后的<>告诉预处理器,前往一组标准位置寻找该文件。由于这些尖括号,预处理器将前往为编译器存储头文件的文件夹中查找文件iostream。这些文件也被称为包含文件,因为它们被包含在源代码中。

在第1行,将插入文件iostream的全部内容。

by 

注意:传统上,头文件的扩展名为.h,也被称为h文件,因此使用的编译指令类似于include 。

较新的编译器不要求指定扩展名,但是,如果引用了使用扩展名的文件,编辑指令出于兼容性考虑仍然会奏效。本书在包含文件中会省略不必要的.h。
在第5行,命令cout使用了文件iostream的内容,该命令在屏幕上显示信息。

在上述源代码中,没有其他的编译指令,因此Motto.cpp的其他代码由编译器处理。

2.2.2 源代码行

实际的程序从第3行开始,它声明了一个名为main()的函数。函数是执行一个或多个相关操作的代码块,它执行某些操作后返回到调用它的位置。

每个C++程序都包含一个main()函数,程序运行时将自动调用main()。

在C++中,所有函数都必须在完成任务后返回一个值。函数main()总是返回一个整数,这是使用关键字int指定的。

与C++程序中的其他代码块一样,函数也包含在{和}内。所有函数都以左大括号{开头,并以右大括号}结尾。

在程序Motto.cpp中,函数main()的大括号位于第4行和第7行。大括号内的所有代码都是函数的组成部分。

在第5行,使用命令cout在屏幕上显示了一条消息。在该对象前面,使用了std::对其进行限定,告诉编译器使用标准C++输入输出库。就现在而言,有关这方面的工作原理太复杂,如果在这里介绍,很可能导致您将本书丢得老远。为他人的安全着想,这些内容将在本书后面介绍。就现在而言,将std::cout视为在程序中用于处理输出的对象的名称,而将std::cin视为用于处理用户输入的对象即可。

在第5行,std::cout后面是<<,它被称为输出重定向运算符。运算符是代码行中根据某种信息执行操作的字符。运算符<<显示它后面的信息(仅限当前行)。在第5行,文本“Solidum petit in profundis!n”用双引号括起来了,这将在屏幕上显示一个字符串,末尾的特殊字符n表示换行符,导致接下来的程序输出从下一行开始。

在第6行,程序返回整数0。程序运行完毕后,操作系统将收到这个值。通常,程序返回0表示它运行成功,而返回其他数字表示出现了某种故障。

第7行的右大括号表示函数main()到此结束,而程序也到此结束。所有程序的基本框架都与这里演示的相同。

《C++入门经典(第6版)》——2.2 程序的组成部分相关推荐

  1. JavaScript入门经典(第4版)

    循序渐进精细讲解所有JavaScript知识点 指导您构建建出神入化的完美Web应用程序 JavaScript入门经典(第4版) 基本信息 原书名: Beginning JavaScript 原出版社 ...

  2. XML入门经典(第五版)

    2019独角兽企业重金招聘Python工程师标准>>> XML入门经典(第五版) 本书对全部内容进行了更新,涵盖了XML的最新技术,如XOuery.RSS.Atom.Aiax等.在讲 ...

  3. c语言入门经典+第5版+习题答案,C语言入门经典(第5版)

    摘要: C语言是每一位程序员都应该掌握的基础语言.C语言是微软.NET编程中使用的C#语言的基础;C语言是iPhone,iPad和其他苹果设备编程中使用的Objective-C语言的基础;C语言是在很 ...

  4. 算法竞赛入门经典(第二版)第三章习题

    声明:作者水平有限,只是会基础C语言的小菜,C++还未入门.作者仅根据算法竞赛入门经典(第二版)书上第三章习题所述题意而编写,并未严格按照原题的输入输出编写,代码仅经过个人测试(OJ网站太慢了).代码 ...

  5. 刘汝佳《算法竞赛入门经典(第二版)》习题(三)

    刘汝佳<算法竞赛入门经典(第二版)>第三章习题(一) 习题3-1 得分(ACM/ICPC Seoul 2005,UVa1585) 给出一个由O和X组成的串(长度为1~80),统计得分.每个 ...

  6. 刘汝佳《算法竞赛入门经典(第二版)》习题(六)

    刘汝佳<算法竞赛入门经典(第二版)>第四章习题(4-1~4-3) 习题4-1 象棋(Xiangai,ACM/ICPC Fuzhou 2011,UVa1589) 考虑一个象棋残局,其中红方有 ...

  7. 刘汝佳《算法竞赛入门经典(第二版)》习题(二)

    刘汝佳<算法竞赛入门经典(第二版)>第二章习题 目录 刘汝佳<算法竞赛入门经典(第二版)>第二章习题 习题2-1 水仙花数 习题2-2 韩信点兵 习题2-3 倒三角形 习题2- ...

  8. c语言入门经典第五版自学,C语言入门经典(第5版) PDF扫描[103MB]

    C语言入门经典(第5版)  内容简介: C语言是每一位程序员都应该掌握的基础语言.C语言是微软.NET编程中使用的C#语言的基础:C语言是iPhone.iPad和其他苹果设备编程中使用的Objecti ...

  9. 算法竞赛入门经典 第2版

    算法竞赛入门经典 包括算法竞赛入门经典训练指南.算法竞赛入门经典各章习题答案.算法竞赛入门经典(第二版) 链接:https://pan.baidu.com/s/1O-bGyhdCqYtRvSBpn7J ...

  10. 《算法竞赛入门经典(第2版)》

    <算法竞赛入门经典(第2版)> 基本信息 作者: 刘汝佳 丛书名: 算法艺术与信息学竞赛 出版社:清华大学出版社 ISBN:9787302356288 上架时间:2014-6-5 出版日期 ...

最新文章

  1. 解决:夜神模拟器连不上adb的问题
  2. 第六讲 Python中的字符串(二)(字符串的操作)
  3. JsonException: Max allowed object depth reached while trying to export from type System.Single
  4. YbtOJ-染色计划【树链剖分,线段树,tarjan】
  5. C++ Coding Standard
  6. SFB 项目经验-82-Active Directory Replication Status
  7. 低压锅炉行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  8. mysql 语法手册_MySQL语法大全_自己整理的学习笔记
  9. 使用思科交换机Packet——Tracer模拟器教程
  10. Java拼图游戏,老程序员花两天搞定,你呢?
  11. Si24R2F+2.4GHz ISM 频段低功耗无线集成嵌入式发射基带无线发射芯片
  12. JavaScript CSS jQuery 网页音乐播放器
  13. 方便学生会议记录,讯飞智能录音笔SR101值得选择
  14. 写给大家看的机器学习书【Part3】直观易懂的感知机学习算法PLA
  15. 图表嵌入到数据表格下方_如何在excel图表下方添加数据表 如何在excel图表中显示数值...
  16. Apipost 一款值得使用的利器
  17. 用Python进行数学建模(二)
  18. python3 与ctypes
  19. 【转载】JConsole监控Tomcat简单配置
  20. linux开启辅助功能,使用Windows XP 的辅助功能向导(转)

热门文章

  1. 怎么录制视频教程?课件录制分享
  2. 如何利用数据挖掘平台,通过数据建模,解决垃圾短信带来的困扰
  3. 人工智能---梯度下降的原理和手写实现
  4. 优达学城安卓开发(初级 项目:sunshine) 分课时树状图
  5. 【2022研电赛】安谋科技企业命题三等奖:基于自主跟随的无人结账一体化购物车
  6. 在Windows 7的Windows Virtual PC上安装Ubuntu 10.4 LTS
  7. 2009年软件架构师必须了解的十个新领域
  8. CVPR 2022 | CNN自监督预训练新SOTA!上交等联合提出HCSC:具有层级结构的图像表征自学习新框架...
  9. Pytorch、OpenCV 读图片
  10. things about Cloudy computing