C程序设计课件第2章.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C程序设计课件第2章.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 课件
- 资源描述:
-
1、第第2章章 数据类型与表达式数据类型与表达式2.1 C+的数据类型的数据类型2.2 常量常量2.3 变量变量2.4 C+的运算符的运算符2.5 算术运算符与算术表达式算术运算符与算术表达式2.6 赋值运算符与赋值表达式赋值运算符与赋值表达式2.7 逗号运算符与逗号表达式逗号运算符与逗号表达式计算机处理的对象是数据,而数据是以某种特定的计算机处理的对象是数据,而数据是以某种特定的形式存在的(例如整数、浮点数、字符等形式)。形式存在的(例如整数、浮点数、字符等形式)。不同的数据之间往往还存在某些联系(例如由若干不同的数据之间往往还存在某些联系(例如由若干个整数组成一个整数数组)。数据结构指的是数据
2、个整数组成一个整数数组)。数据结构指的是数据的组织形式。例如,数组就是一种数据结构。不同的组织形式。例如,数组就是一种数据结构。不同的计算机语言所允许使用的数据结构是不同的。处的计算机语言所允许使用的数据结构是不同的。处理同一类问题,如果数据结构不同,算法也会不同。理同一类问题,如果数据结构不同,算法也会不同。例如,对例如,对10个整数排序和对包含个整数排序和对包含10个元素的整型数个元素的整型数组排序的算法是不同的。组排序的算法是不同的。C+可以使用的数据类型如下:可以使用的数据类型如下:2.1 C+的数据类型的数据类型数据类型数据类型基本类型基本类型整型整型短整型短整型(short int
3、)整型整型(int)长整型长整型(long int)字符型字符型(char)浮点型浮点型 单精度型单精度型(float)双精度型双精度型(double)长双精度型长双精度型(long double)布尔型布尔型(bool)构造类型构造类型枚举类型枚举类型(enum)数组类型数组类型结构体类型结构体类型(struct)共用体类型共用体类型(union)类类型类类型(class)指针类型指针类型引用类型引用类型空类型空类型(void)布尔型就是逻辑型,空类型就是无值型。布尔型就是逻辑型,空类型就是无值型。C+的数据包括常量与变量,常量与变量都具有类的数据包括常量与变量,常量与变量都具有类型。由以上
4、这些数据类型还可以构成更复杂的数据型。由以上这些数据类型还可以构成更复杂的数据结构。例如利用指针和结构体类型可以构成表、树、结构。例如利用指针和结构体类型可以构成表、树、栈等复杂的数据结构。栈等复杂的数据结构。C+并没有统一规定各类数据的精度、数值范围和并没有统一规定各类数据的精度、数值范围和在内存中所占的字节数,各在内存中所占的字节数,各C+编译系统根据自己编译系统根据自己的情况作出安排。书中表的情况作出安排。书中表2.1列出了列出了Visual C+数值数值型和字符型数据的情况。型和字符型数据的情况。说明:说明:(1)整型数据分为长整型整型数据分为长整型(long int)、一般整型一般整
5、型(int)和和短整型短整型(short int)。在在int前面加前面加long和和short分别表分别表示长整型和短整型。示长整型和短整型。(2)整型数据的存储方式为按二进制数形式存储,整型数据的存储方式为按二进制数形式存储,例如十进制整数例如十进制整数85的二进制形式为的二进制形式为1010101,则在,则在内存中的存储形式如图内存中的存储形式如图2.1所示。所示。图图2.1(3)在整型符号在整型符号int和字符型符号和字符型符号char的前面的前面,可以加可以加修饰符修饰符signed(表示表示“有符号有符号”)或或unsigned(表示表示“无符号无符号”)。如果指定为。如果指定为s
6、igned,则数值以补码形则数值以补码形式存放,存储单元中的最高位式存放,存储单元中的最高位(bit)用来表示数值的用来表示数值的符号。如果指定为符号。如果指定为unsigned,则数值没有符号,全则数值没有符号,全部二进制位都用来表示数值本身。例如短整型数据部二进制位都用来表示数值本身。例如短整型数据占两个字节占两个字节,见图,见图2.2。图图2.2有符号时,能存储的最大值为有符号时,能存储的最大值为215-1,即,即32767,最,最小值为小值为-32768。无符号时,能存储的最大值为。无符号时,能存储的最大值为216-1,即即65535,最小值为,最小值为0。有些数据是没有负值的,可。有
7、些数据是没有负值的,可以使用以使用unsigned,它存储正数的范围比用它存储正数的范围比用signed时时要大一倍。要大一倍。(4)浮点型浮点型(又称实型又称实型)数据分为单精度数据分为单精度(float)、双精双精度度(double)和长双精度和长双精度(long double)3种,在种,在Visual C+6.0中,对中,对float提供提供6位有效数字,对位有效数字,对double提提供供15位有效数字,并且位有效数字,并且float和和double的数值范围不的数值范围不同。对同。对float分配分配4个字节,对个字节,对double和和long double分配分配8个字节。个字
8、节。(5)表中类型标识符一栏中,方括号表中类型标识符一栏中,方括号 包含的部包含的部分可以省写,如分可以省写,如short和和short int等效,等效,unsigned int和和unsigned等效。等效。常量的值是不能改变的,一般从其字面形式即可判常量的值是不能改变的,一般从其字面形式即可判别是否为常量。常量包括两大类,即数值型常量别是否为常量。常量包括两大类,即数值型常量(即常数即常数)和字符型常量。如和字符型常量。如12,0,-3为整型常量,为整型常量,4.6,-1.23为实型常量,包含在两个单撇号之间的为实型常量,包含在两个单撇号之间的字符为字符常量,如字符为字符常量,如a,x。
9、这种从字面形式即可这种从字面形式即可识别的常量称为识别的常量称为“字面常量字面常量”或或“直接常量直接常量”。2.2 常量常量 2.2.1 什么是常量什么是常量数值常量就是通常所说的常数。在数值常量就是通常所说的常数。在C+中,数值常中,数值常量是区分类型的,从字面形式即可识别其类型。量是区分类型的,从字面形式即可识别其类型。1.整型常量整型常量(整数)的类型整数)的类型在上一节中已知道:在上一节中已知道:整型数据可分为整型数据可分为int,short int,long int以及以及unsigned int,unsigned short,unsigned long等类别。整型常量也分为以上等
10、类别。整型常量也分为以上类别。为什么将数值常量区分为不同的类别呢?因类别。为什么将数值常量区分为不同的类别呢?因为在进行赋值或函数的参数虚实结合时要求数据类为在进行赋值或函数的参数虚实结合时要求数据类型匹配。型匹配。那么,一个整型常量怎样从字面上区分为以上的类那么,一个整型常量怎样从字面上区分为以上的类别呢?别呢?2.2.2 数值常量数值常量(1)一个整数,如果其值在一个整数,如果其值在-32768+32767范围内,范围内,认为它是认为它是short int型,它可以赋值给型,它可以赋值给short int型、型、int型和型和long int型变量。型变量。(2)一个整数,如果其值超过了上
11、述范围,而在一个整数,如果其值超过了上述范围,而在-2147483648+2147483647范围内,则认为它是范围内,则认为它是long int型,可以将它赋值给一个型,可以将它赋值给一个int或或long int型变量。型变量。(3)如果某一计算机系统的如果某一计算机系统的C+版本(例如版本(例如Visual C+)确定确定int与与long int型数据在内存中占据的长型数据在内存中占据的长度相同,则它们能够表示的数值的范围相同。因此,度相同,则它们能够表示的数值的范围相同。因此,一个一个int型的常量也同时是一个型的常量也同时是一个long int型常量,可型常量,可以赋给型或以赋给型
12、或long int型变量。型变量。(4)常量无常量无unsigned型。但一个非负值的整数可以型。但一个非负值的整数可以赋值给赋值给unsigned整型变量,只要它的范围不超过变整型变量,只要它的范围不超过变量的取值范围即可。量的取值范围即可。一个整型常量可以用一个整型常量可以用3种不同的方式表示:种不同的方式表示:(1)十进制整数。如十进制整数。如1357,-432,0等。在一个整型常等。在一个整型常量后面加一个字母量后面加一个字母l或或L,则认为是则认为是long int型常量。型常量。例如例如123L,421L,0L等,这往往用于函数调用中。等,这往往用于函数调用中。如果函数的形参为如果
13、函数的形参为long int,则要求实参也为则要求实参也为long int型,此时用型,此时用123作实参不行,而要用作实参不行,而要用123L作实参。作实参。(2)八进制整数。在常数的开头加一个数字八进制整数。在常数的开头加一个数字0,就表,就表示这是以八进制数形式表示的常数。如示这是以八进制数形式表示的常数。如020表示这表示这是八进制数是八进制数20,即(,即(20)8,它相当于十进制数,它相当于十进制数16。(3)十六进制整数。在常数的开头加一个数字十六进制整数。在常数的开头加一个数字0和一和一个英文字母个英文字母X(或或x),就表示这是以十六进制数形式就表示这是以十六进制数形式表示的
14、常数。如表示的常数。如0X20表示这是十六进制数表示这是十六进制数20,即,即(20)16,它相当于十进制数,它相当于十进制数32。2.浮点数的表示方法浮点数的表示方法一个浮点数可以用两种不同的方式表示:一个浮点数可以用两种不同的方式表示:(1)十进制小数形式。如十进制小数形式。如21.456,-7.98等。它一般由等。它一般由整数部分和小数部分组成,可以省略其中之一整数部分和小数部分组成,可以省略其中之一(如如78.或或.06,.0),但不能二者皆省略。,但不能二者皆省略。C+编译系统编译系统把用这种形式表示的浮点数一律按双精度常量处理,把用这种形式表示的浮点数一律按双精度常量处理,在内存中
15、占在内存中占8个字节。如果在实数的数字之后加字个字节。如果在实数的数字之后加字母母F或或f,表示此数为单精度浮点数,如表示此数为单精度浮点数,如1234F,-43f,占占4个字节。如果加字母个字节。如果加字母L或或l,表示此数为长双精表示此数为长双精度数度数(long double),在在GCC中占中占12个字节,在个字节,在Visual C+6.0中占中占8个字节。个字节。(2)指数形式指数形式(即浮点形式即浮点形式)一个浮点数可以写成指数形式,如一个浮点数可以写成指数形式,如3.14159可以表可以表示为示为0.314159101,3.14159100,31.415910-1,314.15
16、910-2等形式。在程序中应表示为:等形式。在程序中应表示为:0.314159e1,3.14159e0,31.4159e-1,314.159e-2,用字用字母母e表示其后的数是以表示其后的数是以10为底的幂,如为底的幂,如e12表示表示1012。其一般形式为其一般形式为数符数符 数字部分数字部分 指数部分指数部分上面各数据中的上面各数据中的0.314159,3.14159,31.4159,314.159 等就是其中的数字部分。可以看到:等就是其中的数字部分。可以看到:由于由于指数部分的存在,使得同一个浮点数可以用不同的指数部分的存在,使得同一个浮点数可以用不同的指数形式来表示,数字部分中小数点
17、的位置是浮动指数形式来表示,数字部分中小数点的位置是浮动的。例如:的。例如:a=0.314159e1;a=3.14159e0;a=31.4159e-1;a=314.159e-2;以上以上4个赋值语句中,用了不同形式的浮点数,但个赋值语句中,用了不同形式的浮点数,但其作用是相同的。其作用是相同的。在程序中不论把浮点数写成小数形式还是指数形式,在程序中不论把浮点数写成小数形式还是指数形式,在内存中都是以指数形式在内存中都是以指数形式(即浮点形式即浮点形式)存储的。例存储的。例如不论在程序中写成如不论在程序中写成314.159或或314.159e0,31.4159e1,3.14159e2,0.314
18、159e3等形式,在内存等形式,在内存中都是以规范化的指数形式存放,如图中都是以规范化的指数形式存放,如图2.3所示。所示。图图2.3数字部分必须小于数字部分必须小于1,同时,小数点后面第一个数,同时,小数点后面第一个数字必须是一个非字必须是一个非0数字,例如不能是数字,例如不能是0.0314159。因。因此此314.159和和314.159e0,31.4159e1,3.14159e2,0.314159e3在内存中表示成在内存中表示成0.314159103。存储单。存储单元分为两部分,一部分用来存放数字部分,一部分元分为两部分,一部分用来存放数字部分,一部分用来存放指数部分。为便于理解,在图用
19、来存放指数部分。为便于理解,在图2.3中是用中是用十进制表示的,实际上在存储单元中是用二进制数十进制表示的,实际上在存储单元中是用二进制数来表示小数部分,用来表示小数部分,用2的幂次来表示指数部分的。的幂次来表示指数部分的。对于以指数形式表示的数值常量,也都作为双精度对于以指数形式表示的数值常量,也都作为双精度常量处理。常量处理。1.普通的字符常量普通的字符常量用单撇号括起来的一个字符就是字符型常量。如用单撇号括起来的一个字符就是字符型常量。如a,#,%,D都是合法的字符常量,在内存中占一都是合法的字符常量,在内存中占一个字节。注意:个字节。注意:字符常量只能包括一个字符,字符常量只能包括一个
20、字符,如如AB 是不合法的。字符常量区分大小写字母,是不合法的。字符常量区分大小写字母,如如A和和a是两个不同的字符常量。撇号是两个不同的字符常量。撇号()是定是定界符,而不属于字符常量的一部分。如界符,而不属于字符常量的一部分。如couta;输出的是一个字母输出的是一个字母“a”,而不是而不是3个字符个字符“a”。2.2.3 字符常量字符常量2.转义字符常量转义字符常量除了以上形式的字符常量外,除了以上形式的字符常量外,C+还允许用一种特还允许用一种特殊形式的字符常量,就是以殊形式的字符常量,就是以“”开头的字符序开头的字符序列。例如,列。例如,n代表一个代表一个“换行换行”符。符。“cou
21、tn;”将输出一个换行,其作用与将输出一个换行,其作用与“coutendl;”相同。这种相同。这种“控制字符控制字符”,在屏幕上是不能显示的。,在屏幕上是不能显示的。在程序中也无法用一个一般形式的字符表示,只能在程序中也无法用一个一般形式的字符表示,只能采用特殊形式来表示。采用特殊形式来表示。常用的以常用的以“”开头的特殊字符见书中表开头的特殊字符见书中表2.2。3.字符数据在内存中的存储形式及其使用方法字符数据在内存中的存储形式及其使用方法将一个字符常量存放到内存单元时,实际上并不是将一个字符常量存放到内存单元时,实际上并不是把该字符本身放到内存单元中去,而是将该字符相把该字符本身放到内存单
22、元中去,而是将该字符相应的应的ASCII代码放到存储单元中。如果字符变量代码放到存储单元中。如果字符变量c1的值为的值为a,c2的值为的值为b,则在变量中存放的是则在变量中存放的是a的的ASCII码码97,b 的的ASCII码码98,如图,如图2.4(a)所示,所示,实际上在内存中是以二进制形式存放的,如图实际上在内存中是以二进制形式存放的,如图2.4(b)所示。所示。图图2.4既然字符数据是以既然字符数据是以ASCII码存储的,它的存储形式码存储的,它的存储形式就与整数的存储形式类似。这样,在就与整数的存储形式类似。这样,在C+中字符型中字符型数据和整型数据之间就可以通用。一个字符数据可数据
23、和整型数据之间就可以通用。一个字符数据可以赋给一个整型变量,反之,一个整型数据也可以以赋给一个整型变量,反之,一个整型数据也可以赋给一个字符变量。也可以对字符数据进行算术运赋给一个字符变量。也可以对字符数据进行算术运算,此时相当于对它们的算,此时相当于对它们的ASCII码进行算术运算。码进行算术运算。例例2.1 将字符赋给整型变量。将字符赋给整型变量。#include using namespace std;int main()int i,j;/i和和j是整型变量是整型变量i=A;/将一个字符常量赋给整型变量将一个字符常量赋给整型变量ij=B;/将一个字符常量赋给整型变量将一个字符常量赋给整型
24、变量jcouti jn;/输出整型变量输出整型变量i和和j的值,的值,n 是换行符是换行符return 0;执行时输出执行时输出 65 66i和和j被指定为整型变量。但在第被指定为整型变量。但在第5和第和第6行中,将字行中,将字符符A和和B分别赋给分别赋给i和和j,它的作用相当于以下两个它的作用相当于以下两个赋值语句:赋值语句:i65;j66;因为因为A和和B的的ASCII码为码为65和和66。在程序的第。在程序的第5和和第第6行是把行是把65和和66直接存放到直接存放到i和和j的内存单元中。因的内存单元中。因此输出此输出65和和66。可以看到:在一定条件下,字符型数据和整型数据可以看到:在一
25、定条件下,字符型数据和整型数据是可以通用的。但是应注意字符数据只占一个字节,是可以通用的。但是应注意字符数据只占一个字节,它只能存放它只能存放0255范围内的整数。范围内的整数。例例2.2 字符数据与整数进行算术运算。下面程序的字符数据与整数进行算术运算。下面程序的作用是将小写字母转换为大写字母。作用是将小写字母转换为大写字母。#include using namespace std;int main()char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;coutc1 c2endl;return 0;运行结果为运行结果为A Ba的的ASCII码为码为97,而,而A的的
展开阅读全文