已阅读5页,还剩107页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第3章基本数据类型与基本运算,3.1简单C+程序3.2基本类型及其派生类型3.3说明语句3.4基本运算符,2,3.1.1求两个数的和与积,#includevoidmain()inta,b,sum,prod;a=3;b=15;sum=a+b;prod=a*b;coutThesumissumendl;coutTheprodisprodradius;floatarea=pai*radius*radius;coutnTheareaofcircleis;coutareaendl;floatcircum=2*pai*radius;coutThecircumofcircleiscircumradius;”的执行将等待用户从键盘输入一个浮点数,而后系统将该数赋值给变量radius。,14,8.字符串常量(简称为字符串)是由双引号括起来的字符序列。双引号为定界符,不属于字符串常量的一部分。虽然字符串中的每个字符在内存中只占1个字节,但整个字符串所占内存的字节数却为字符串的长度加一。是因为系统自动在每个字符串常量的末字符后加上了一个“空字符”(作为结束标志)。系统使用转义字符0来表示“空字符”。注意,字符A在内存占1个字节,而字符串“A”则占2个字节。往cout(即屏幕)上输出字符串常量可以对用户起到提示作用。对字符串的处理通常与字符数组和指针有关。,15,3.2基本数据类型及其派生类型-,3.2.1数据类型的概念3.2.2基本类型3.2.3基本类型的派生类型3.2.4enum类型3.2.5定点类型和浮点类型,16,3.2.1数据类型概念,任何一个程序都可以分为三个部分:数据的输入,数据的加工,数据的输出,所以数据是程序运行的对象和结果,是程序设计的第一要素。,17,类型概念的几个要点是:,(1)每一项数据应唯一地属于某种类型;(2)每一数据类型意味着一个有明确定义的值的集合;(3)同一类型的数据占有相同大小的存储空间;(4)同一类型的数据具有相同的(允许对其施加的)运算操作集。,18,类型的分类(课本p53表3.1),1基本类型2用户定义类型3导出类型,19,3.2.2基本数据类型-,C+预定义了五种最基本的数据类型:整型、浮点型(也称实型)、字符型、Bool型、无值型。整型数据说明符为int;浮点型又分为单精度浮点型float及双精度浮点型double;字符型用char;bool型bool,而无值型使用void。,20,通过基本数据类型能够导出(或派生出)其它的数据类型。程序中用到的所有变量以及有名常量都必须在使用前先说明其数据类型。字面常量由系统自动将其归属于某种数据类型(从其“字面书写格式”区分)。,21,1.int类型,表示整型数据。其值集(取值范围)为:-3276832767。通常占用两个字节的存储空间(注意,在VC6下,int等同于longint,占用四个字节的存储空间)。允许对其施加的运算(操作)有:算术运算(+、-、*、/、%等),关系运算(、=、=、!=)及一些其他运算。,22,int类型字面常量的“字面书写格式”为:,(1)十进制整数与数学中的表示完全相同。如:5980,-123,0,32766。组成十进制整数的基本字符为:0,1,.,9(共10个)。(2)八进制整数以数字0开头的整数为八进制整数。如:017,0321,-0777。组成八进制整数的基本字符为:0,1,.,7(共8个)。(3)十六进制整数以两个符号0 x(或0X)开头的整数为十六进制整数。如:0 x30,-0 xA9f3,0X777。组成十六进制整数的基本字符为:0,1,.,9,A,B,C,D,E,F(共16个,6个字母也可以小写)。,23,2.float与double类型,表示实型数据。float值集(取值范围)为:-3.4E383.4E38,通常占用四个字节的存储空间。double值集(取值范围)为:-1.7E3081.7E308,通常占用八个字节的存储空间。允许对其施加的运算(操作)有:算术运算(+,-,*,/等),关系运算(,=,=,!=)及一些其他运算。,24,实型数据字面常量的“字面书写格式”为:,(1)一般表示形式(也称定点表示法)与数学中的实数表示法相同。如:45.6,-1279.23,0.5。(2)指数表示形式(也称科学表示法)由尾数部分,字母E或e,后随指数部分构成。如:-592e12,12345.6E-2,0.123456e3。其中后两个数都表示实数123.456。,25,3.char类型,表示字符数据。其值集即为ASCII码集(书P31,表2.1),也即C+使用的全部基本符号。1个字符数据表示1个基本符号,占用一个字节的存储空间。在内存中,字符数据以ASCII码存储,即是说,系统是以整数来表示字符数据的。从而那些可施加于整数的运算(如算术运算及关系运算等)也可施加于字符型数据。,26,char类型字面常量的“字面书写格式”为:,(1)用单引号括起一个基本符号如:A,a,8,+,?。单引号为定界符,不属于字符型常量的一部分。(2)以反斜杠开头的转义字符-参看书p36用于将反斜杠后面的一个特定字符或反斜杠后面的三个数字字符转变成另外的意义。表示的仍是一个字符。通常表示那些不可显示的或从键盘无法输入的字符,以及那些被指定为特殊用途的字符。,27,例如:,n-代表一个字符,表示“换行”;t-代表一个字符,表示“制表符”,用于实现横向跳格;-代表一个字符,表示反斜杠字符本身;-代表一个字符,表示单引号;-代表一个字符,表示双引号;ddd-代表一个字符,该字符的ASCII码值为八进制的ddd(其中的d表示0到7的一个数字字符);,28,xhh-代表一个字符,该字符的ASCII码值为十六进制的hh(其中的h表示0到F的一个数字字符)。可知,使用ddd或xhh的方式是可以表示任一个字符数据的,如,101,x41,和A均可用来表示字符常量A。转义字符可以出现在字符串常量中,但仍代表一个字符。如,字符串常量tNankaiUniversityn中就出现了两个转义字符,该字符串常量共含有19个字符,要占用20个字节的存储空间。,29,下面的程序说明char型与int型所具有的密切关系:,#includevoidmain()charc1=A,c2=t,c3=t,c4=!;/t为水平制表符,与t表示不同的字符coutc1=c1,int(c1)=int(c1),c1+1=c1+1endl;/int(c1)把char型的c1变为int型coutc2=c2,int(c2)=int(c2)n;coutc3=c3,int(c3)=int(c3),A+a=A+aendl;coutc4=c4,int(c4)=int(c4),c4+0=c4+0n;/注意,A、a、0的ASCII码依次为65、97、48,30,输出结果:,c1=A,int(c1)=65,c1+1=66c2=t,int(c2)=116c3=,int(c3)=9,A+a=162c4=!,int(c4)=33,c4+0=81,31,4.bool类型,bool型,仅有两个取值(一个常量值为标识符false,而另一个为标识符true)。其中的false代表逻辑值0(假),而true则代表逻辑值1(真)。,32,5.void类型,void类型称为无值类型,该类型的值集为一空集。void类型是一种较抽象的概念。在C+语言中,没有返回值的函数应被说明为是返回void类型值的函数;而没有参数的函数,其形参表也应被说明为是void。另外,若某指针类型被说明为“void*”,则该指针可指向任一种数据类型。不可用void类型来说明变量。,33,3.2.3基本类型的派生类型-,基本类型(除void外)经过简单的字长或范围的变更,可形成它们的简单派生类型。派生类型说明符是通过在int、float、double、char前面加上类型修饰符而构成的。类型修饰符包括:signed(有符号)、unsigned(无符号)、short(短)和long(长)。,34,注意(p56表3.2),signed和unsigned只能修饰char和int(意味着浮点型数据总是有符号的)。较常用的简单派生类型有:unsignedchar,取值范围为0255;unsignedint,取值范围为065535;longint取值范围为-21474836482147483647;unsignedlongint取值范围为04294967295。,35,省略掉int而进行简写,当被修饰的是int时,允许省略掉int而进行简写,如,“longint”可简写为“long”,“unsignedint”可简写为“unsigned”,“unsignedlongint”可简写为“unsignedlong”等。,36,3.2.4enum类型-,enum类型又称枚举类型,它是一种由用户参与定义的类型。其定义格式如下:enum;其中的由用户任起,是一个标识符。由一批构成,各间以逗号分割。而或者是一个标识符,或者以=的格式出现。,37,说明枚举变量,可以缺省。不缺省时意味着在定义枚举类型的同时,又说明了一批枚举变量。缺省时,可通过如下两种方式之一来说明枚举变量:;或:enum;其中的中的每一表项可以是变量名,也可以同时赋初值。,38,例如:,enumcolorRED,YELLOW=3,BLUEc1=YELLOW,c2;/定义了枚举类型名color;同时又说明了/两个枚举变量c1与c2,且给变量c1赋了初值colora,b=BLUE,c,d=RED;/说明了4个color类型(枚举类型)的变量a,b,c,d,/且给变量b与d赋了初值,39,关于enum类型有以下几点说明:,(1)一个enum类型实际上是int型的一个子集,其每一个枚举值(标识符)都代表着一个int型常量值。(2)n个枚举值(标识符)在定义时全没赋常量值时,它们自左至右分别与整数0,1,.,n-1对应。(3)若第i个枚举值(标识符)在定义时被赋于了整数m,则其未赋常量值的后续枚举值分别与整数m+1,m+2,.对应,直到下一个赋了值的枚举值或结束。(4)使用枚举量的主要优点是:既可增加程序的可读性,又可增加程序数据的安全性。增加程序可读性是显然的。由于枚举量的赋值范围被限定、且被说明的枚举量要进行类型检查,这样无疑会增加程序数据的安全性。,40,enum类型的示意性使用例子:,#includevoidmain()enumcolorRED,YELLOW=3,BLUEc1=YELLOW,c2;colora,b=BLUE,c,d=RED;coutREDYELLOWBLUEendl;coutc1=c1b=bd=d:.(2)!+-+-而“”则是一个一般表达式。,58,使用含义:,将赋值运算符右边的表达式的值计算出来,并赋值给,该值同时又是整个赋值表达式的值。注意,赋值表达式的运算结果为左值,等同于赋值运算符左边的那一分量,从而可进一步被赋值。称能够出现在赋值运算符左边的分量为左值(leftvalue,缩写为lvalue),左值代表着一个可以存放数据的存储空间。如,变量x可以作左值,但常量22以及表达式x+22则都不可作为左值,因为它们都不代表可以存放数据的存储空间。,59,例:,inti=1,j=10,k;i=j+5;(将表达式j+5的值,赋值给变量i,此时变量i的值变为15)。k=i=j+5;(将赋值表达式i=j+5的值,也即变量i的值15,进一步赋值给变量k,使k也等于15)。,60,又例,(j=33)=55;(赋值表达式j=33是左值,等同于左运算分量j,可进一步被赋值,结果将使j的值变为55)。(j=i=66)+;(结果将使i等于66,使j的值变为67。注意,“j=i=66”使j等于66,且该子表达式就等同于变量j,从而可进一步进行“+”运算)。注意,2=j+5以及i+1=55都是错误的赋值表达式,因为赋值号的左端非左值。,61,2.复合赋值运算,C+提供如下10个复合赋值运算符:+=、-=、*=、/=、%=、=、=优先于=,!=;.,=同级,结合性是自左向右(想一下,“1x6)将d1的结果赋值给无符号字符型变量d3,而后按int值输出d3将得结果217(将00100110的每一位都取反后得结果11011001)。,88,执行如下的程序,可对上述结果进行验证,#includevoidmain()unsignedchard1=38,d2=44;cout(d1d2)1)int(d3)endl;cout-217-,91,注意,(1)之所以d1”时,会产生语法错误!其原因是算符“/ok!输出“22+8*2=38”/算术运算符优先级高于“”,可以不加括号cout2!=3=2!=3;/error!-注意,算符“!=”比算符“”优先级低!cout(2!=3)=(2!=3);/加括号后,ok!coutk=i+=(k=i+)endl;/ok!-赋值算符“=”的优先级低于“0?x:-x的结果为x的绝对值。而s=(ab)?a:b;等价于条件语句if(ab)s=a;elses=b;C+中具有最低优先级的3个运算符依次为(从高到低):三目运算符,赋值运算符,逗号运算符。,100,3.sizeof字长提取运算,sizeof字长提取运算也称为字长提取符或长度运算符。它为一目运算,其运算对象可以是一个任何类型的变量或者是一个任何的数据类型(名)。运算结果为那一变量(或类型)所占存储空间的大小(即字节数)。但该运算的使用格式较特殊,类似于函数调用,形式为:sizeof()。另外,当运算对象为变量时,还可省去那对圆括号而简写为sizeof。,101,例如:,charc;floatf;则sizeof(c)与sizeofc以及sizeof(char)的结果都为1。而sizeof(f)与sizeoff以及sizeof(float)的结果值都为4。sizeof(double)的结果值为8。,102,编程序,通过sizeof运算了解系统对不同类型数据的内存实际分配情况,#includevoidmain()coutNumberofbytesused:n;coutchar:sizeof(char)endl;coutshort:sizeof(short)endl;coutint:sizeof(int)endl;coutlong:sizeof(long)endl;coutunsignedint:sizeof(unsignedint)endl;coutfloat:sizeof(float)endl;coutdouble:sizeof(double)-通过指针访问结构体或类对象的成员(间接成员选择);:-类限定或全局限定;.-访问结构体或类对象的成员(直接成员选择)。,105,(2)第2优先级中的charch=B;doublex=1.1;20/3.0+-i(及改变后的变量i)20/3+j+%3+0(及改变了的变量j)x*=i+19(及变量x)k+*j+*i+(及变量i、j、k)+k*+j*+i(及变量i、j、k)k=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 卸车工劳动合同范本
- 中外技能转让协议书
- 杭州停车场合同范本
- 校园卫生清洁协议书
- 样签约球员合同协议
- 机关印刷资料协议书
- 服装企业协议书范本
- 服务器购买合同范本
- 广东省2025年下半年佛山市事业单位招考易考易错模拟试题(共500题)试卷后附参考答案
- 广东广州总工会直属事业单位(广州工程技术职业学院)引进急需专业人才易考易错模拟试题(共500题)试卷后附参考答案
- 河道整治与生态修复工程方案
- 彩妆师的培训课件
- 中国石化员工管理制度
- 2025至2030年中国烟草行业市场深度分析及发展趋向分析报告
- 2024年家政服务业职业技能大赛家庭照护赛项技术工作文件
- 2022可调节负荷并网运行与控制技术规范+第6部分-并网运行调试
- 2025年有机肥市场分析报告
- 信息安全意识培训课件
- 小米公司介绍课件
- 部编高教版2023·职业模块 中职语文 品质
- 脑挫裂伤患者护理
评论
0/150
提交评论