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

news2024/10/6 17:34:30

 


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

博主主页:夏驰和徐策

所属专栏:夏驰和徐策带你从零开始学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返回的错误标识。不同的系统可能有不同的处理方式,例如返回给操作系统的退出码或在命令行界面中显示错误信息。这有助于了解程序执行的错误处理机制。

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Debian11 编译bluez

之前的几篇文章写过如果编译x86和dv300 版本的bluez,不过那都是在 Centos7 上编译的。然而当我从taobao 上买了一个蓝牙适配器后发现无法使用(淘宝客服说不支持Centos,只支持ubuntu 和 debian)。再者 Centos 现在也停止支持服务了…

头歌网页设计与制作实训答案

我这里已经看不见原题目了,只粘贴了有Begin和End部分的代码,如果题目符合但答案不符合的的,欢迎在评论区找我。如果有帮助,请赞一个。注意看目录里有没有你需要的。 目录 一、HTML——基础 1.初识HTML: 简单的Hello World网页制…

程序员秋招最全Java面试题及答案整理(2023最新版)

前言 大家好,最近一个月,花了不少时间,给大家整理了一套 2023 的技术面试资料 包括各大厂最新面试题以及面经解析涉及JVM,Mysql,并发,Spring,Mybatis,Redis,RocketMQ&a…

Firefly-SRC资产探测平台

前言 Firefly是一个集资产管理、信息收集和漏洞扫描的综合平台。 Firefly-SRC依托于Firefly平台中的信息收集功能,不断收集和整理各大src相关资产数据。希望能为各位白帽子师傅们提供更稳定可靠的src资产数据,减少师傅挖洞前期的信息收集时间&#xff0c…

一体化个人门户Web Portal

什么是 Web Portal ? Web Portal 是一个一体化的 Web 仪表板,提供许多小部件来构建个人门户。具有加载外部插件的能力。对于那些只需要链接仪表板并希望使用 yaml 配置它的人来说,Lite 版是一个精简版本。 构建镜像 如果你不想自己构建,可以…

Qt的基本知识与应用

一、C梳理 1. 面向对象的三大特性 1.1 封装 把类的一些属性和细节隐藏(private、protected),根据读写需要重新开放外部调用接口(public、protected)。 1.2 继承 在已有的类的基础上创建一个新的类,新的类拥…

最新AI创作系统V5.0.2+支持GPT4+支持ai绘画+实时语音识别输入+文章资讯发布功能+用户会员套餐

最新AI创作系统V5.0.2支持GPT4支持ai绘画实时语音识别输入文章资讯发布功能用户会员套餐! AI创作系统一、源码系统介绍二、AI创作系统程序下载三、安装教程四、主要功能展示五、更新日志 AI创作系统 1、提问:程序已经支持GPT3.5、GPT4.0接口 2、支持三种…

全网唯一正确的一部:GPT式网页上逐字输出像打字的效果用vue js实现全代码-使用SSE技术

GPT逐字显示效果 开篇 像这种屏幕上逐字输出,像一个机器人自动在屏幕上用传统的打印机或者说像“红警”、“COD”游戏里那种电传打字机逐字输出的效果是不是很酷? 其实,这种输出方式不仅仅只是酷,而是有着其设计原理性的东西存在的。GPT采用“逐字输出”的方式回答用户问…

Linux配置静态IP-包教包会(纯干货)

如有错误,敬请谅解! 此文章仅为本人学习笔记,仅供参考,如有冒犯,请联系作者删除!! 方法一:图形化操作 1 选用NAT模式 打开虚拟机软件VM主页,如图,点击编辑虚…

Python3 OS 文件/目录方法 | 菜鸟教程(十四) 详解!!!

目录 一、os 模块提供了非常丰富的方法用来处理文件和目录。 二、常用的方法如下表所示: 三、常用方法详解 (一)Python3 os.access() 方法 1、概述 2、语法 3、参数 (1)path -- 要用来检测是否有访问权限的路径…

你不可不知的HTML优化技巧

如何提升Web页面的性能,很多开发人员从多个方面来下手如JavaScript、图像优化、服务器配置,文件压缩或是调整CSS。 很显然HTML 已经达到了一个瓶颈,尽管它是开发Web 界面必备的核心语言。HTML页面的负载也是越来越重。大多数页面平均需要40K…

宝塔安装brotli

宝塔安装nginx broli nginxhttps配置: nginx (情景) 由于需要优化配置nginx宝塔安装版默认安装的是稳定版本。不支持添加第三方模块。(之前我不知道brotli安装需要使用编译安装,这里宝塔直接升级nginx没出线问题&…

Java面试题2023(实际面试中遇到的有意思的问题)

问题1&#xff1a;Explain需要关注的指标 需要重点关注type、rows、filtered、extra。 type由上至下&#xff0c;效率越来越高 ALL 全表扫描 index 索引全扫描 range 索引范围扫描&#xff0c;一般条件查询中出现了>、<、in、between等查询 ref 使用非唯一索引扫描或…

实训七:存储过程与触发器 - 数据库实验 存储过程

数据库实验 存储过程 第1关&#xff1a;建立和调用存储过程&#xff08;不带输出参数的存储过程&#xff09;任务描述任务要求建立存储过程调用过程 相关知识建立存储过程设置语句结束符参数列表声明局部变量显示表达式的值 代码参考 第2关&#xff1a;建立和调用存储过程&…

小程序 快速配置https服务接口 - 项目是nodeJS配置本地https服务,不用下载源码不用付费,直接使用Git的openssh功能(亲测有效)

背景 学习网易云音乐小程序开发&#xff0c;用了老师的node JS做后端服务器&#xff0c;上线小程序体验版必须要https接口。 接下来就是配置NodeJs服务https踩的坑跟发现的惊喜。 配置https 下载与配置 密钥生成 1 运行命令 &#xff1a; openssl genrsa -out privatekey.p…

【Pyecharts】| 风电场运维可视化系统 | 文末送书

目录 一. &#x1f981; 摘要二. &#x1f981; 文章结构三. &#x1f981; 所用开发工具与相关技术3.1 PyCharm3.2 Flask3.3 Pyecharts3.4 Jinja2 四. &#x1f981; 设计与实现4.1 系统总体需求4.1.1 数据采集和处理4.1.2 可视化设计4.1.3 后台功能实现 4.2 系统用户模块的实…

「小产品独立变现实战训练营1期」正在进行中

本次训练营共3周&#xff0c;目前正在进行中的第2周&#xff0c;同学正在认真完成作业&#xff0c;跟随教学视频和产品源码进行学习。 大家好&#xff0c;我是凯凯刘&#xff0c;一名程序员&#xff0c;一直在做小产品的开发变现&#xff0c;目标就是让小产品的变现更简单。【小…

认识异常

目录 异常的概念与体系结构 异常的概念 异常的体系结构 异常的分类 异常的处理 防御式编程 1. LBYL: 2. EAFP: 异常的抛出 异常的捕获 异常声明throws try-catch捕获并处理 关于异常的处理方式 finally 异常的处理流程 自定义异常类 异常的概念与体系结构 异常…

【吃透网络安全】2023软考网络管理员考点网络安全(五)包过滤等多种防火墙详解

涉及知识点 什么是包过滤防火墙、应用层网关防火墙、状态监测防火墙&#xff1f;包过滤防火墙的概念及定义&#xff0c;包过滤防火墙、应用层网关防火墙的优缺点&#xff0c;软考网络管理员常考知识点&#xff0c;软考网络管理员网络安全&#xff0c;网络管理员考点汇总。 后…