1.1 编写一个简单的C++程序

 


博主介绍:爱打游戏的计算机专业学生

博主主页:夏驰和徐策

所属专栏:夏驰和徐策带你从零开始学C++


1.1.0 这段话告诉我们什么?

这段话解释了一个C++程序中的`main`函数的基本结构和功能。

它告诉我们以下几点:

1. C++程序的入口点是`main`函数,操作系统通过调用`main`函数来运行程序。
2. `main`函数是一个特殊的函数,但其定义与其他函数一样,包括返回类型函数名、形参列表和函数体。
3. 在这个示例中,`main`函数没有任何形参,即形参列表为空。
4. `main`函数的返回类型必须为`int`,表示返回一个整数类型的值。
5. 函数体由花括号括起来,其中只有一条语句,即`return 0;`。这条语句表示函数执行结束,并将整数值0返回给操作系统。
6. 整数值0通常表示程序正常结束,其他非零值可能表示异常情况或错误码。

总之,这段话向我们介绍了`main`函数在C++程序中的作用和定义方式,以及它的返回类型和函数体的基本结构。这是编写C++程序时必须了解和遵循的基本知识。

 

1.1.1 编译、运行程序 

         编写好程序后,我们就需要编译它。如何编译程序依赖于 你使用的操作系统和编译器。
你所使用的特定编译器的相关使用细节,请查阅参考手册或询问经验丰富的同事。
        很多 PC机上的编译器都具备集成开发环境 (Integrated Developed Environment, IDE),将编译器与其他程序创建和分析工具包装在一起。在开发大型程序时,这类集成环境可能是非常有用的工具,但需要一些时间来学习如何高效地使用它们。学习如何使用这类开发环境己经超出了本书的范围。
        大部分编译器,包括集成 DDE 的编译器,都会提供一个命令行界面。除非你已经了解IDE,否则你会觉得借助命令行界面开始学习C++还是很容易的。这种学习方式的好处是,可以先将精力集中于 C4+语言本身(而不是一些开发工具),而且,一旦你掌握了语言,DDE 通常是很容易学习的。
程序源文件命名约定
无论你使用命令行界面或者 DDE,大多数编译器都要求程序源码存储在一个或多个文件中。程序文件通常被称为源文件(source file)。在大多数系统中,源文件的名字以一个后缀为结尾,后级是由一个句点后接一个或多个字符组成的。后缀告诉系统这个文件是一个C++程序。不同编译器使用不同的后级命名约定,最常见的包括.ccw.cxx、.cpp、.cp 及.c。
从命令行运行编译器
如果我们正在使用命令行界面,那么通常是在一个控制台窗口内(例如 UNIX 系统中的外壳程序窗口或者 Windows 系统中的命令提示符窗口)编译程序。假定我们的 main程序保存在文件prog1.cc 中,可以用如下命令来编译它
$ CC progi.cc
其中,CC 是编译器程序的名字,$是系统提示符。编译器生成一个可执行文件。Windows
系统会将这个可执行文件命名为 prog1.exe。 UNIX 系统中的编译器通常将可执行文件
命名为 a.out。
为了在 Windows 系统中运行一个可执行文件,我们需要提供可执行文件的文件名,可

 我的理解:

这段话主要是告诉你在编写好程序之后,你需要将它进行编译才能执行。编译程序的方式会因操作系统和编译器的不同而有所差异。

首先,它提到了集成开发环境(IDE),这是一种将编译器和其他开发工具整合在一起的软件。IDE对于开发大型程序非常有用,但需要花一些时间学习如何使用它们。

然后,它提到了命令行界面和编译器。命令行界面是一种通过命令来与计算机交互的方式,编译器通常提供了命令行界面的支持。使用命令行界面可以更专注于学习C++语言本身,而不是陷入复杂的开发工具中。一旦你熟悉了语言,学习使用集成开发环境也会相对容易。

接着,它解释了程序源文件的命名约定。编译器要求将程序代码存储在一个或多个文件中,这些文件通常被称为源文件。不同的编译器对源文件的命名约定可能有所不同,但常见的后缀有`.cc`、`.cpp`、`.cxx`、`.c`等。

最后,它说明了如何通过命令行界面来运行编译器进行编译。你需要在控制台窗口中输入相应的命令来编译源文件,编译器会生成一个可执行文件。可执行文件在Windows系统中通常以`.exe`为后缀,而在UNIX系统中通常命名为`a.out`。

总之,这段话的目的是给你提供了关于编译程序的一般概念和步骤,同时强调了根据操作系统和编译器的不同可能会有一些细微的差异。

以忽略其扩展名.exe:
$ progi
在一些系统中,即使文件就在当前目录或文什火中,你也必须显式指出文件的位置。在此情况下,我们可以键入
§.1proal
“.〞后跟一个反斜线指出该文件在当前目录中。
为了在UNx 系统中运行一个可执行文什,我们需要使用全文什名,包括文件护展名:
§ a.out
如更需要指定文件位置,需要用一个么。后跟一个斜线水指出可执行文件位于当的目承中。
$ .la.out
访问 main 的返回值的方法依赖于 系统。在UNI 和 Windows 系统中,执行完一个程序后,都可以通过echo 命令获得其返回值。
在UNIX 系统中,通过如下命令获得状态:
§ echo S?
在 Windows 系统中查看状态可键入:
$ echo SERRORLEVELS
运行 GNU 或微软编译器
在不同操作和编译器系统中,运行 C++编译器的命令也各不相同。最常用的编译器是GNU 编译器和微软 Visual Studio 编译器。默认情况下,运行 GNU 编译器的命令是g+t:
$ ¢++=0pr091 prog1.c¢
此处,$是系统提示符。一。 prog1 是编译器参数,指定了可执行文件的文件名。在不同的操作系统中,此命令生成一个名为 progI 或 progI.exe 的可执行文件。在UNIX
系统中,可执行文件没有后级;在贝indows 系统中,后级为.exe。如果省略 了-o prog1
参数,在UNX 系统中编译器会生成一个名为a.out 的可执行文件,在 Windovs 系统中则会生成一个名为arexe 的可执行文件(注意:根据使用的 GNU 编译器的版本,你可能需要指定-std-ct+0x 参数来打开对 Ct+11的支持)。
运行微软 Visual Studio 2010 编译器的命令为cl:
C:lusers \me \ Programs> cl /EHsc progl.cpp
此处,C:NUsers \me \Programs>是系统提示符,\Users (me\Programs 是当前目录名(即当前文件夹)。命令c1调用编译器,/日Hs∞ 是编译器选项,用来打开标准异常处理。微软编译器会自动生成一个可执行文件,其名宇与第一个源文件名对应。可执行文件的文件名与源文件名相同,后级为.exe。在此例中,可执行文件的文件名为
progl. exe.
编译器通常都包含一些选项,能对有问题的程序结构发出警告。打开这些选项通常是一个好习惯。我们习惯在 GNU 编译器中使用-Wal1 选项,在微软编译器中则使用/N4。
更详细的信息请查阅你使用的编译器的参考手册。 

我的理解:

这段话主要是关于在不同系统和编译器下运行C++编译器的命令和一些注意事项。

首先,它提到了在某些系统中,即使文件在当前目录或路径中,你也需要显式指定文件的位置。例如,使用`progi`命令来执行可执行文件。如果需要指定文件位置,可以使用文件名前面加上路径,如`.\/a.out`表示可执行文件位于当前目录中。

接着,它提到了如何获取程序的返回值。在UNIX系统和Windows系统中,可以通过不同的命令来获取返回值。在UNIX系统中,使用`echo $?`命令获取状态值,在Windows系统中使用`echo %ERRORLEVEL%`命令获取状态值。

然后,它介绍了运行GNU编译器和微软Visual Studio编译器的命令。使用GNU编译器的命令通常是`g++`,而使用Visual Studio编译器的命令通常是`cl`。通过这些命令编译源文件会生成一个可执行文件,文件名通常与第一个源文件名相同,并且在UNIX系统中没有后缀,在Windows系统中后缀为`.exe`。

对于GNU编译器,它提到了一些常用的选项,如`-Wall`用于打开警告信息,以及可能需要指定`-std=c++11`参数来启用对C++11的支持。对于微软编译器,它提到了使用`/EHsc`选项来打开标准异常处理,并且生成的可执行文件的文件名与第一个源文件名相同。

最后,它建议查阅使用的编译器的参考手册以获取更详细的信息,并提到了在编译器中开启一些选项来检查有问题的程序结构是一个好习惯。

总之,这段话提供了一些关于在不同系统和编译器下编译和运行C++程序的命令和注意事项。

 课后练习:

1.1节练习

练习 1.1:查阅你使用的编译器的文档,确定它所使用的文件命名约定。编译并运行第 2页的main 程序。

练习 1.2:改写程序,让它返回-1。返回值-1通常被当作程序错误的标识。重新编译并运行你的程序,观察你的系统如何处理 main 返回的错误标识。

 我的理解:

这两题的作用

这两个练习有以下作用:

练习 1.1:
- 通过查阅所使用的编译器的文档,了解编译器所使用的文件命名约定。不同的编译器可能有不同的约定,这将帮助您更好地理解编译器的工作方式。
- 编译并运行第2页的main程序,实际操作一遍编译和运行过程,加深对编译器的使用和程序执行的理解。

练习 1.2:
- 修改程序,让它返回-1作为错误标识。这是一种常见的做法,用于标识程序执行过程中出现的错误。
- 观察您的系统如何处理main返回的错误标识。不同的系统可能有不同的处理方式,例如返回给操作系统的退出码或在命令行界面中显示错误信息。这有助于了解程序执行的错误处理机制。

这两个练习旨在提供实际的编程练习和对编译器工作原理的更深入理解。通过实际编译和运行程序,您可以获得关于编译器、文件命名约定以及程序执行错误处理的实际经验,并加深对这些概念的理解和掌握。这对于学习和实践编程是非常有益的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/31913.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python爬取城市天气数据,并作数据可视化

1.爬取广惠河深2022-2024年的天气数据 import requests # 发送请求要用的模块 需要额外安装的 import parsel import csvf open(广-惠-河-深天气.csv, modea, encodingutf-8, newline) csv_writer csv.writer(f) csv_writer.writerow([日期, 最高温度, 最低温度, 天气,…

深入理解深度学习——GPT(Generative Pre-Trained Transformer):GPT-3与Few-shot Learning

分类目录:《深入理解深度学习》总目录 相关文章: GPT(Generative Pre-Trained Transformer):基础知识 GPT(Generative Pre-Trained Transformer):在不同任务中使用GPT GPT&#x…

对英雄联盟英雄属性数据的预处理及相似度矩阵计算

目录 一、引言 二、任务1 1、填充缺失值 2、用中位数填充“生命值”属性列缺失值 3、 用均值填充“生命值”属性列缺失值 三、任务2 注:英雄联盟英雄属性数据资源可在博客资源中自行获取。 一、引言 英雄联盟作为一款古早的刀塔游戏,可谓之刀塔游…

[golang 微服务] 7. go-micro框架介绍,go-micro脚手架,go-micro结合consul搭建微服务案例

一.go-micro框架 前言 上一节讲解了 GRPC微服务集群 Consul集群 grpc-consul-resolver相关的案例,知道了微服务之间通信采用的 通信协议,如何实现 服务的注册和发现,搭建 服务管理集群,以及服务与服务之间的 RPC通信方式,具体的内容包括: pro…

聊聊微服务到底该如何划分

背景 现在动不动就是微服务架构,但是微服务划分的合理与否会极大的影响开发过程中的复杂度,划分的重要性不言而喻,但是在微服务划分这条路上并没有银弹,有的说DDD可以解决微服务的划分问题,吕哥想说的是那只是理论上的…

端午作业1

只要文件存在,就会有唯一对应的inode号,且相应的会存在一个struct inode结构体。在应用层通过open()打开一个设备文件,会对应产生一个inode号,通过inode号可以找到文件的inode结构体 根据inode结构体中文件…

JMU20 软件工程经济学 复习总结

文章目录 碎碎念0. 基准收益率 i1. 现金流量图2. 净现值 NPV,内部收益率 IRR3. 单利,复利计算4. 等额年金NAV5. 动态回收期 P t ′ P_t Pt′​6. 固定资产折旧 [书P44]7. 增值税8. 软件行业增值税的即征即退9. 利息备付率 ICR,偿债备付率 DSC…

C语言学习(二十六)---指针练习题(二)

在上节的内容中,我们进一步学习了有关指针的内容,并做了一些关于指针的题目,今天我们将继续练习一些指针的题目,以便大家更好的理解和掌握指针的知识,好了,话不多说,开整!&#xff0…

GreasyFork+Github

GreasyForkGithub 好长时间没用 GreasyFork 了,最近在刷 Spring Boot 的各种知识点,其中很大时间都在学习 baeldung.com 这个站点。不知道是因为最近刷的勤了还是怎么的,这个网站经常会弹出一个“让我关闭广告阻拦插件”的提示框&#xff0c…

MongoDB集群管理(三)

MongoDB集群管理 集群介绍 为什么使用集群 随着业务数据和并发量的增加,若只使用一台MongoDB服务器,存在着断电和数据风险的问题,故采用Mongodb复制集的方式,来提高项目的高可用、安全性等性能。 MongoDB复制是将数据同步到多个…

超简单 display:flex教学

display 弹性盒子解释 Flex是Flexible Box的缩写,意为"弹性布局”,用来为盒状模型提供最大的灵活性。 它的作用: 它能够更加高效方便的控制元素的对齐、排列。 可以自动计算布局内元素的尺寸,无论这个元素的尺寸是固定的还是…

学习mysql

Mysql SQL语言的规则与规范SQL大小写规范注释数据导入指令 基本的SELECT语句SELECT.列的别名去掉重复行空值参与运算着重号(当有表名是关键字时)显示表结构where 运算符算术运算符 比较运算符号性运算符非符号形运算符空运算符非空运算符最小值运算符最大值运算符BETWEEN AND运…

Java的理论知识部分

文章目录 前言 一、Java的发展 1.1、Java的出现 1.2、Java官方网址 1.3、Java的平台 1.4、Java各版本新加的内容 1.5、java特点 1.6、Java的三种运行机制 1.7、Java的编译与运行 1.8、补充内容——华为鲲鹏jdk以及鲲鹏计算 二、面向对象程序编程 2.1、对象与类 2.2、Ja…

软考:软件工程:面向对象技术与UML,时序图,用例图,类对象,封装,继承,多态

软考:软件工程: 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准备的 (1&#…

Web3 将 MetaMask添加入谷歌浏览器 扩展程序中

Web3到现在理论这段是说的有点太多了 那么 我们先来看个东西 叫 MetaMask 这个在我们项目开发过程中需要使用 MetaMask是一个开源的以太坊的一个钱包 那么 钱包肯定就是用来管理数据资产的 MetaMask 是以一个浏览器插件形式存在的 它可以直接连接到以太坊的网络中来管理我们…

【软件工程】软件工程期末考试试卷

瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和( C)。 A、详细计划 B、可行性分析 C、 运行阶段 D、 测试与排…

【运维】服务器系统安装 -- 服务器版

目录 一、环境 二、ubuntu 三、启动u盘制作 Stage 1:下载balena,制作U盘启动工具 Stage 2:下载Ubuntu 系统镜像(参考上一节:Ubuntu 22.04.2 LTS ) Stage 3:将镜像写入到U盘 四、设置开启…

【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面

知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 战斗背景:做了个串口接收界面,用来接收传输过来的信号。但是光用数字显示太单调,需要用图线显示出来。 战略目标&#x…

腾讯云服务器镜像市场快速搭建WordPress博客网站教程

通过腾讯云服务器的镜像市场搭建WordPress网站非常简单,不需要手动配置WP所需的Web环境,一键即可安装WordPress博客,腾讯云百科使用腾讯云服务器通过镜像市场的WordPress镜像搭建WP网站教程: 目录 腾讯云服务器通过市场镜像安装…

计算机网络和Linux网络

计算机网络和Linux网络 计算机网络概论 什么是计算机网络 计算机网络(结构上) 由节点(主机、网络交换设备设备)、边(通信设备)、协议构成协议:对等层的实体在通讯过程中应该遵守的规则的集合&…