中国高等院校计算机基础教育课程体系规划教材讲授第2章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

计算机处理的对象是数据,而数据是以某种特定的形式存在的(例如整数、浮点数、字符等形式)。不同的数据之间往往还存在某些联系(例如由若干个整数组成一个整数数组)。数据结构指的是数据的组织形式。例如,数组就是一种数据结构。不同的计算机语言所允许使用的数据结构是不同的。处理同一类问题,如果数据结构不同,算法也会不同。例如,对10个整数排序和对包含10个元素的整型数组排序的算法是不同的。C++可以使用的数据类型如下:2.1C++的数据类型数据类型基本类型整型短整型(shortint)整型(int)长整型(longint)字符型(char)浮点型单精度型(float)双精度型(double)长双精度型(longdouble)布尔型(bool)构造类型枚举类型(enum)数组类型结构体类型(struct)共用体类型(union)类类型(class)指针类型引用类型空类型(void)布尔型就是逻辑型,空类型就是无值型。C++的数据包括常量与变量,常量与变量都具有类型。由以上这些数据类型还可以构成更复杂的数据结构。例如利用指针和结构体类型可以构成表、树、栈等复杂的数据结构。C++并没有统一规定各类数据的精度、数值范围和在内存中所占的字节数,各C++编译系统根据自己的情况作出安排。书中表2.1列出了VisualC++数值型和字符型数据的情况。说明:(1)整型数据分为长整型(longint)、一般整型(int)和短整型(shortint)。在int前面加long和short分别表示长整型和短整型。(2)整型数据的存储方式为按二进制数形式存储,例如十进制整数85的二进制形式为1010101,则在内存中的存储形式如图2.1所示。图2.1(3)在整型符号int和字符型符号char的前面,可以加修饰符signed(表示“有符号”)或unsigned(表示“无符号”)。如果指定为signed,则数值以补码形式存放,存储单元中的最高位(bit)用来表示数值的符号。如果指定为unsigned,则数值没有符号,全部二进制位都用来表示数值本身。例如短整型数据占两个字节,见图2.2。图2.2有符号时,能存储的最大值为215-1,即32767,最小值为-32768。无符号时,能存储的最大值为216-1,即65535,最小值为0。unsigned存储正数的范围比用signed时要大一倍。(4)浮点型(又称实型)数据分为单精度(float)、双精度(double)和长双精度(longdouble)3种,在VisualC++6.0中,对float提供6位有效数字,对double提供15位有效数字,并且float和double的数值范围不同。对float分配4个字节,对double和longdouble分配8个字节。(5)表中类型标识符一栏中,方括号[]包含的部分可以省写,如short和shortint等效,unsignedint和unsigned等效。常量的值是不能改变的。常量包括两大类,即数值型常量(即常数)和字符型常量。如12,0,-3为整型常量,4.6,-1.23为实型常量,包含在两个单撇号之间的字符为字符常量,如′a′,′x′。这种从字面形式即可识别的常量称为“字面常量”或“直接常量”。2.2常量2.2.1什么是常量数值常量就是通常所说的常数。在C++中,数值常量是区分类型的,从字面形式即可识别其类型。1.整型常量(整数)的类型在上一节中已知道:整型数据可分为int,shortint,longint以及unsignedint,unsignedshort,unsignedlong等类别。整型常量也分为以上类别。为什么将数值常量区分为不同的类别呢?因为在进行赋值或函数的参数虚实结合时要求数据类型匹配。2.2.2数值常量一个整型常量可以用3种不同的方式表示:(1)十进制整数。如1357,-432,0等。在整型常量后面加一个字母l或L,则认为是longint型常量。例如123L,421L,0L等,这往往用于函数调用中。如果函数的形参为longint,则要求实参也为longint型,此时用123作实参不行,而要用123L作实参。(2)八进制整数。在常数的开头加一个数字0,就表示这是以八进制数形式表示的常数。如020表示这是八进制数20,即(20)8,它相当于十进制数16。(3)十六进制整数。在常数的开头加一个数字0和一个英文字母X(或x),就表示这是以十六进制数形式表示的常数。如0X20表示这是十六进制数20,即(20)16,它相当于十进制数32。2.浮点数的表示方法一个浮点数可以用两种不同的方式表示:(1)十进制小数形式。如21.456,-7.98等。它一般由整数部分和小数部分组成,可以省略其中之一(如78.或.06,.0),但不能二者皆省略。C++编译系统把用这种形式表示的浮点数一律按双精度常量处理,在内存中占8个字节。如果在实数的数字之后加字母F或f,表示此数为单精度浮点数,如1234F,-43f,占4个字节。如果加字母L或l,表示此数为长双精度数(longdouble),在GCC中占12个字节,在VisualC++6.0中占8个字节。(2)指数形式(即浮点形式)一个浮点数可以写成指数形式,如3.14159可以表示为0.314159×101,3.14159×100,31.4159×10-1,314.159×10-2等形式。在程序中应表示为:0.314159e1,3.14159e0,31.4159e-1,314.159e-2,用字母e表示其后的数是以10为底的幂,如e12表示1012。其一般形式为数符数字部分指数部分上面各数据中的0.314159,3.14159,31.4159,314.159等就是其中的数字部分。可以看到:由于指数部分的存在,使得同一个浮点数可以用不同的指数形式来表示,数字部分中小数点的位置是浮动的。在程序中不论把浮点数写成小数形式还是指数形式,在内存中都是以指数形式(即浮点形式)存储的。例如不论在程序中写成314.159或314.159e0,31.4159e1,3.14159e2,0.314159e3等形式,在内存中都是以规范化的指数形式存放,存储单元分为两部分,一部分用来存放数字部分,一部分用来存放指数部分。如图2.3所示。图2.31.普通的字符常量用单撇号括起来的一个字符就是字符型常量。如′a′,′#′,′%′,′D′都是合法的字符常量,在内存中占一个字节。注意:①字符常量只能包括一个字符,如′AB′是不合法的。②字符常量区分大小写字母,如′A′和′a′是两个不同的字符常量。③撇号(′)是定界符,而不属于字符常量的一部分。如cout′a′;输出的是一个字母“a”,而不是3个字符“′a′”。2.2.3字符常量2.转义字符常量除了以上形式的字符常量外,C++还允许用一种特殊形式的字符常量,就是以“\”开头的字符序列。例如,′\n′代表一个“换行”符。“cout′\n′;”将输出一个换行,其作用与“coutendl;”相同。这种“控制字符”,在屏幕上是不能显示的。在程序中也无法用一个一般形式的字符表示,只能采用特殊形式来表示。常用的以“\”开头的特殊字符见书中表2.2。例2.1将字符赋给整型变量。#includeiostreamusingnamespacestd;intmain(){inti,j;//i和j是整型变量i=′A′;//将一个字符常量赋给整型变量ij=′B′;//将一个字符常量赋给整型变量jcouti′′j′\n′;//输出整型变量i和j的值,′\n′是换行符return0;}执行时输出6566在一定条件下,字符型数据和整型数据是可以通用的。但是应注意字符数据只占一个字节,它只能存放0~255范围内的整数。例2.2字符数据与整数进行算术运算。下面程序的作用是将小写字母转换为大写字母。#includeiostreamusingnamespacestd;intmain(){charc1,c2;c1=′a′;c2=′b′;c1=c1-32;c2=c2-32;coutc1′′c2endl;return0;}运行结果为AB4.字符串常量用双撇号括起来的部分就是字符串常量,如″abc″,″Hello!″,″a+b″,″Liping″都是字符串常量。字符串常量″abc″在内存中占4个字节(而不是3个字节),见图2.5。图2.5注意:1、/0的含义,与所占字节。2、″a″和′a′代表不同的含义,所占字节数也不同。3、如果希望将“\”字符也作为字符串中的一个字符,则应写为″abc\\n″,在C++程序设计中,常用一个符号名代表一个常量,称为符号常量。例2.3符号常量的使用。#definePRICE30//注意是预处理命令,不要加分号intmain(){intnum,total;num=10;total=num*PRICE;cout″total=″totalendl;return0;}2.2.4符号常量程序运行结果为total=300注意:符号常量不是变量,也不能被赋值。使用符号常量的好处是:(1)含义清楚。(2)在需要改变一个常量时能做到“一改全改”。在程序运行期间其值可以改变的量称为变量。一个变量应该有一个名字,并在内存中占据一定的存储单元,在该存储单元中存放变量的值。请注意区分变量名和变量值这两个不同的概念,见图2.6。图2.62.3变量2.3.1什么是变量定义变量的一般形式是变量类型变量名表列;C语言要求变量的定义应该放在所有的执行语句之前,而C++则放松了限制,只要求在第一次使用该变量之前进行定义即可。也就是说,它可以出现在语句的中间,如inta;//定义变量a(在使用a之前定义)a=3;//执行语句,对a赋值floatb;//定义变量b(在使用b之前定义)b=4.67;//执行语句,对b赋值charc;//定义变量c(在使用c之前定义)c=′A′;//执行语句,对c赋值2.3.3定义变量在定义变量时,如果加上关键字const,则变量的值在程序运行期间不能改变,这种变量称为常变量(constantvariable)。常变量又称为只读变量(read-only-variable)。例如,constinta=3;//用const来声明这种变量的值不能改变,指定其值始终为3在定义常变量时必须同时对它初始化(即指定其值),此后它的值不能再改变。常变量不能出现在赋值号的左边。例如上面一行不能写成constinta;a=3;//常变量不能被赋值可以用表达式对常变量初始化,如constintb=3+6,c=3*cos(1.5);2.3.5常变量C++提供了以下运算符:(1)算术运算符+(加)-(减)*(乘)/(除)%(整除求余)++(自加)--(自减)(2)关系运算符>(大于)<(小于)==(等于)>=(大于或等于)<=(小于或等于)!=(不等于)2.4C++的运算符(3)逻辑运算符&&(逻辑与)||(逻辑或)!(逻辑非)(4)位运算符(按位左移)(按位右移)&(按位与)|(按位或)∧(按位异或)~(按位取反)(5)赋值运算符(=及其扩展赋值运算符)(6)条件运算符(?:)(7)逗号运算符(,)(8)指针运算符(*)(9)引用运算符和地址运算符(&)(10)求字节数运算符(sizeof)(11)强制类型转换运算符((类型)或类型())(12)成员运算符(.)(13)指向成员的运算符(-)(14)下标运算符([])(15)其他(如函数调用运算符())在本章中主要介绍算术运算符与算术表达式,赋值运算符与赋值表达式,逗号运算符与逗号表达式,其他运算符将在以后各章中陆续介绍。+(加法运算符,或正值运算符。如3+5,+3)-(减法运算符,或负值运算符。如5-2,-3)*(乘法运算符。如3*5)/(除法运算符。如5/3)%(模运算符,或称求余运算符,%两侧均应为整型数据,如7%4的值为3)。2.5算术运算符与算术表达式2.5.1基本的算术运算符说明:1、两个整数相除的结果为整数,如5/3的结

1 / 38
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功