编写一个简单的C++程序
每个C++程序都包含一个或多个函数(function),其中一个必须命名为main。操作系统通过调用main来运行C++程序。下面是一个非常简单的main函数,它什么也不干,只是返回给操作系统一个值:
- int main()
- {
- return 0;
- }
一个函数的定义包含四部分:返回类型(return type)、函数名(function name)、一个括号包围的形参列表(parameterlist,允许为空)以及函数体(function body)。虽然main函数在某种程度上比较特殊,但其定义与其他函数是一样的。
在本例中,main的形参列表是空的(()中什么也没有)。6.2.5节(第218页)将会讨论main的其他形参类型。
main函数的返回类型必须为int,即整数类型。int类型是一种内置类型(built-in type),即语言自身定义的类型。
函数定义的最后一部分是函数体,它是一个以左花括号(curly brace)开始,以右花括号结束的语句块(block of statements):
- {
- return 0;
- }
这个语句块中唯一的一条语句是return,它结束函数的执行。在本例中,return还会向调用者返回一个值。当return语句包括一个值时,此返回值的类型必须与函数的返回类型相容。在本例中,main的返回类型是int,而返回值0的确是一个int类型的值。
请注意,return语句末尾的分号。在C++中,大多数C++语句以分号表示结束。它们很容易被忽略,但如果忘记了写分号,就会导致莫名其妙的编译错误。
在大多数系统中,main的返回值被用来指示状态。返回值0表明成功,非0的返回值的含义由系统定义,通常用来指出错误类型。
重要概念:类型
类型是程序设计最基本的概念之一,在本书中我们会反复遇到它。一种类型不仅定义了数据元素的内容,还定义了这类数据上可以进行的运算。
程序所处理的数据都保存在变量中,而每个变量都有自己的类型。如果一个名为v的变量的类型为T,我们通常说“v具有类型T”,或等价的,“v是一个T类型变量”。
编译、运行程序
编写好程序后,我们就需要编译它。如何编译程序依赖于你使用的操作系统和编译器。你所使用的特定编译器的相关使用细节,请查阅参考手册或询问经验丰富的同事。
很多PC机上的编译器都具备集成开发环境(Integrated Developed Environment,IDE),将编译器与其他程序创建和分析工具包装在一起。在开发大型程序时,这类集成环境可能是非常有用的工具,但需要一些时间来学习如何高效地使用它们。学习如何使用这类开发环境已经超出了本书的范围。
大部分编译器,包括集成IDE的编译器,都会提供一个命令行界面。除非你已经了解IDE,否则你会觉得借助命令行界面开始学习C++还是很容易的。这样学习方式的好处是,可以先将精力集中于C++语言本身(而不是一些开发工具),而且,一旦你掌握了语言,IDE通常是很容易学习的。
程序源文件命名约定
无论你使用命令行界面或者IDE,大多数编译器都要求程序源码存储在一个或多个文件中。程序文件通常被称为源文件(source file)。在大多数系统中,源文件的名字以一个后缀为结尾,后缀是由一个句点后接一个或多个字符组成的。后缀告诉系统这个文件是一个C++程序。不同编译器使用不同的后缀命名约定,最常见的包括.cc、.cxx、.cpp、.cp及.C。
从命令行运行编译器
如果我们正在使用命令行界面,那么通常是在一个控制台窗口内(例如UNIX系统中的外壳程序窗口或者Windows系统中的命令提示符窗口)编译程序。假定我们的main程序保存在文件prog1.cc中,可以用如下命令来编译它
$ CC prog1.cc
其中,CC是编译器程序的名字,$是系统提示符。编译器生成一个可执行文件。Windows系统会将这个可执行文件命名为prog1.exe。UNIX系统中的编译器通常将可执行文件命名为a.out。
为了在Windows系统中运行一个可执行文件,我们需要提供可执行文件的文件名,可以忽略其扩展名.exe:
$ prog1
在一些系统中,即使文件就在当前目录或文件夹中。你也必须显式指出文件的位置。在此情况下,我们可以键入
$ .\prog1
“.”后跟一个反斜线指出该文件在当前目录中。
为了在UNIX系统中运行一个可执行文件,我们需要使用全文件名,包括文件扩展名:
$ a.out
如果需要指定文件位置,需要用一个“.”后跟一个斜线来指出可执行文件位于当前目录中。
$ ./a.out
访问main的返回值的方法依赖于系统。在UNIX和Windows系统中,执行完一个程序后,都可以通过echo命令获得其返回值。
在UNIX系统中,通过如下命令获得状态
$ echo $?
在Windows系统中查看状态可键入
$ echo %ERRORLEVEL%
运行GNU或微软编译器
在不同操作和编译器系统中,运行C++编译器的命令也各不相同。最常用的编译器是GNU编译器和微软Visual Studio编译器。默认情况下,运行GNU编译器的命令是g++:
$g++ -o prog1 prog1.cc
此处,$是系统提示符。-o prog1是编译器参数,指定了可执行文件的文件名。在不同的操作系统中,此命令生成一个名为prog1或prog1.exe的可执行文件。在UNIX系统中,可执行文件没有后缀;在Windows系统中,后缀为.exe。如果省略了-o prog1参数,在UNIX系统中编译器会生成一个名为a.out的可执行文件,在Windows系统中则会生成一个名为a.exe的可执行文件(注意:根据使用的GNU编译器的版本,你可能需要指定-std=c++0x参数来打开对C++11的支持)。
运行微软Visual Studio 2010编译器的命令为cl:
C:\Users\me\Programs>cl /EHsc prog1.cpp
此处,C:\Users\me\Programs>是系统提示符,\Users\me\Programs是当前目录名(即当前文件夹)。命令cl调用编译器,/EHsc是编译器选项,用来打开标准异常处理。微软编译器会自动生成一个可执行文件,其名字与第一个源文件名对应。可执行文件的文件名与源文件名相同,后缀为.exe。在此例中,可执行文件的文件名为prog1.exe。
编译器通常都包含一些选项,能对有问题的程序结构发出警告。打开这些选项通常是一个好习惯。我们习惯在GNU编译器中使用-Wall选项,在微软编译器中则使用/W4。
更详细的信息请查阅你使用的编译器的参考手册。
练习
练习1:查阅你使用的编译器的文档,确定它所使用的文件命名约定。编译并运行第2页的main程序。
练习2:改写程序,让它返回-1。返回值-1通常被当作程序错误的标识。重新编译并运行你的程序,观察你的系统如何处理main返回的错误标识。
本文节选自《C++ Primer中文版(第5版)》
【美】Stanley B.Lippman( 斯坦利 李普曼) Josee Lajoie(约瑟 拉乔伊 ) Barbara E. Moo (芭芭拉 默) 著
王刚 杨巨峰 译
电子工业出版社出版
相关推荐
【标题】"MFC编写的简单聊天程序"指的是利用Microsoft Foundation Classes (MFC)库开发的一个基础级聊天应用程序。MFC是微软为Windows操作系统提供的一个C++类库,它简化了Windows API的使用,使开发者能够更高效地...
C++简单程序设计图书管理系统 C++简单程序设计图书管理系统 前段时间自己写的一个小的图书管理系统,分享一下,高手就别看了....
3. **人机对战**:在人机模式中,我们需要设计一个简单的AI策略。这通常涉及搜索算法,如Minimax算法或者Alpha-Beta剪枝。这些算法通过模拟对手可能的下一步和之后的所有可能情况,评估每种情况的优劣,从而为当前...
编写C++程序完成以下功能: (1) 定义一个Point类,其属性包括点的坐标,提供计算两点之间距离的方法; (2) 定义一个矩形类,其属性包括左上角和右下角两个点,提供计算面积的方法; (3) 创建一个矩形对象,...
C++编写的简单移位程序源代码 搜索方法: 关键字:数据加密程序 数据加密程序源代码 其余部分可在“搜索”按钮前面的文本框内填上本资源的关键字进行搜索。 或者点击“高级搜索”按钮进入“高级搜索”,在“搜索结果...
总结来说,这个“c++编写的使用期限程序”展示了C++在解决实际问题中的应用,尤其是如何利用面向对象编程思想来设计和实现一个具有特定功能的软件。通过学习和理解这个程序,开发者可以深化对C++语言的理解,同时...
C++ 程序设计 计算器
这是用Java编写的简单聊天程序 可供初学者下载学习
用C++程序编写的万年历,任意输入某一个日期就可以输出当月当年的日期
在Linux环境下编写C++程序是许多初学者踏入编程世界的必经之路。本教程将通过"Ubuntu Movie.avi"这个屏幕录像,向你展示一个简单的C++程序编写过程。在这个过程中,我们将涉及以下几个关键知识点: 1. **Linux操作...
C++ 求立方根 用C++言编写程序 求一个数的立方根
"不用MFC编写一个C++窗口程序" 本节课程将教您如何不用MFC编写一个C++窗口程序,使用Win32SDK应用程序。我们将从基础知识开始,逐步介绍Win32API函数库、Windows编程的基本概念、数据类型等内容。 基础知识 在...
用c++编写的一个简单的c语言词法分析器,供初学者学习使用
在这个名为“c++编写的简易鼠标作图程序,含有工程所有文件”的项目中,开发者使用了MFC来构建一个简单的图形用户界面,允许用户通过鼠标进行绘图。MFC中的CView类通常被用来处理视图部分,即用户在窗口中看到的内容...
C++程序混淆器(CodeDiscorder),可用于以宏定义的方式混淆C++编写的程序。C++程序混淆器(CodeDiscorder),可用于以宏定义的方式混淆C++编写的程序。C++程序混淆器(CodeDiscorder),可用于以宏定义的方式混淆...
在本文中,我们将深入探讨如何使用C++编程语言来创建一个基本的记事本应用程序。C++是一种强大的、面向对象的编程语言,适用于开发各种类型的应用程序,包括文本编辑器。我们将关注以下关键知识点: 1. **文件操作*...
9. **项目实践**:理论知识与实际操作相结合,可以尝试构建自己的图像处理项目,比如一个简单的图像编辑器或人脸识别系统,以加深对C++图像处理的理解。 最后,学习C++图像处理不仅仅是掌握编程技能,还需要不断...
一个简单的C++计算器程序通常包括以下几个部分: 1. **输入处理**:程序需要接收用户输入的数学表达式。这通常通过标准输入(std::cin)实现,可以是简单的两个数字和运算符,或者更复杂的表达式。 2. **解析...
编写C++程序完成以下功能: (1) 假定有一件商品,程序用随机数指定该商品的价格(1-1000的整数); (2) 提示用户猜价格,并输入:若用户猜的价格比商品价格高或低,对用户作出相应的提示; (3) 直到猜对为止,...