已阅读5页,还剩63页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章数据类型和表达式,3.1C+的字符集、关键字和标识符3.2C+的基本数据类型3.3运算符与表达式3.4常用库函数,3.1C+的字符集、关键字和标识符,C+语言的字符集,编写C+程序必须使用C+语言字符集中的字符:大写、小写英文字母各26个;阿拉伯数字10个;运算符、标点符号及其他字符30个:+-*/%=!:?,.“()#_空格例外:源程序注释中可以包含字符集以外的字符。字符串作为数据也可以包含字符集以外的字符。,标识符,标识符的用途:程序中的变量名、函数名、数组名、类型名、命名空间名等的命名。标识符的构成:由大小写字母、数字和下划线组成,且首字符必须是字母或下划线,不能与关键字同名。说明:标识符中不能含有空格、标点符号和其他字符。标识符区分大小写。例如,d和D是不同的标识符。标识符的有效长度取决于具体的C+编译系统。标识符应体现“见名知义”原则,注重可读性。,关键字,关键字又称保留字,是编程语言预定义的具有专门用途的标识符,不允许用作用户的标识符。C+语言有48个标准关键字。注意:有的C+编译系统支持的关键字不止这些。如VC+还有_int8、_int16、_int32、_int64、_inline等关键字。,3.2C+的基本数据类型,程序处理的对象是数据,数据分为常量和变量。每个常量或变量都有数据类型。C+的数据类型分为两大类:基本数据类型和非基本数据类型。基本数据类型是指C+内部预先定义的类型,包括整型、字符型、实型、逻辑型和空类型;非基本数据类型是用户定义的类型,包括数组、指针、结构、联合、枚举和类。,基本数据类型,数据类型用于描述程序中的数据。学习数据类型,要掌握每种类型占用的内存字节数、取值范围及所支持的操作。例如,基本数据类型int,用于描述整数,占用4字节内存(在VC+中),取值范围是-21474836482147483647,支持的操作包括加、减、乘、除等运算。基本数据类型见表3-1所示。,字符类型,字符类型用关键词char表示,用于描述单个字符数据。字符采用ASCII编码(见附录)来表示,在存储时占用一个字节。由于ASCII编码是正整数值且只使用了一个字节的低7位二进制位,最高位为0,为了便于字符数据的处理,同时也为了一字节整型数据的表达和处理,C+允许把char型数据当作整型数据,因此,C+允许用signed和unsigned修饰char,即可以有signedchar和unsignedchar类型。,整数类型,整数类型(整型)用于描述整数。基于合理占用内存和提高数据处理速度的考虑,将整型分为:一字节整型:char,signedchar,unsignedchar。双字节整型:shortint,short,signedshort,signedshortint,unsignedshort,unsignedshortint。四字节整型:int,signedint,unsignedint,unsigned,longint,long,signedlong,signedlongint,unsignedlong,unsignedlongint。,整数类型,若表达的整数超出四字节整型的表示范围,则:可用有些C+编译系统提供了八字节整型,如VC+的_int64整型。如果所表达的整数对精度要求不高,则可选用float或double型替代。如果所表达的整数对精度要求特别高,则只好自编多字节整型数运算的程序。,整数类型,无符号整型数据在计算机内部用原码表示,即它的二进制数表示。带符号整型数据在计算机内部用补码表示。正数的补码形式就是它的原码;负数的补码形式由其相应的正数的原码的各位逐位求反后在最低位加1而得到。例如:若用双字节整型,则1和-1的补码分别是0000000000000001,1111111111111111。,实数类型,实数类型(实型)又称浮点型,用于描述实数。基于合理占用内存和提高数据处理速度的考虑,将实型分为单精度型(用float表示)和双精度型(用double表示)。对于double型,还可用long修饰,使其成为longdouble型,以表示精度更高的实型数。在计算机内部,实型数据用浮点形式(科学记数法)表示,即把数据表示成m2e,其中m称为尾数,e称为阶码。实型数据在计算机中存储的是尾数和阶码两部分。由于实型数据是不连续的,因此,无法精确表示每个实数,只能用实型数据近似表达实数。,空值,空值型:用void表示。void类型用于:描述函数没有返回值(参见第6章)函数没有参数(参见第6章)无类型指针(参见10.8.3节),常量,常量:程序执行过程中,其值不能被改变的量。常量分为:字面常量和标识符常量。字面常量:在程序中不要任何说明就可直接使用的常量。如,12,34.5。字面常量分为:整型常量、实型常量、字符型常量和字符串常量。标识符常量:经说明或定义后才能使用的常量。,整型常量,整型常量可用十进制、八进制、十六进制来表示。十进制整数:由09数字组成,除表示正负数的字符外,第一个数字不能是0(整数0除外)。例如:+12,-25,0,1289“+”号可以省略。八进制整数:由数字07数字组成,且以0开头。例如:012。十六进制整数:以0X(x)开头,由数字09和字母a(A)f(F)组成。例如:0 x1abCD,0X02a5,0 xABCFD213,整型常量,整型常量可用后缀来修饰:以L或l后缀修饰的整数为长整数。例如:2L,023l,0X25678983L以U或u后缀修饰的整数为无符号整数。例如:6U,045U,0XF91789U后缀U(u)和L(l)可以组合使用,表示无符号长整型数。例如:0XFFFFFF96LU,120000UL若整型常量未明确指定为长整型或无符号整型,则其类型由编译系统在编译时依据它的取值自动指定。,实型常量,实型常量(或称浮点常量),有两种形式:十进制数形式:由数字09和小数点组成。如:0.1234,253.6,0.0,.205,-78.指数形式(科学表示法):以10的指数形式表示。如:12.3E12,0.2333e-12第一个数为12.31012,第二个数为0.233310-12。注意,在E或e的前面必须有数字,且在E或e之后的指数部分必须是整数。例如:e10,E5,.e5,1.0e3.5都是不合法的实数。,实型常量,浮点常量可用后缀来修饰:带后缀f或F的浮点常量是单精度浮点数(float型)带后缀d、D或无后缀的浮点常量是双精度浮点数(double型)带后缀l、L结尾的浮点常量是长双精度浮点数(longdouble型)。带后缀浮点常量举例:0.12f,12.3E12f,0.12D,0.12,12.3E12,3.5L,12.3E12L前两个为单精度浮点数,第三第五个为双精度浮点数,最后两个是长双精度浮点数。,字符型常量,字符型常量:用单引号括起来的单个字符。字符型常量在计算机内是采用该字符的ASCII编码值来表示的,其数据类型为char型。合法的字符型常量举例:a,A,1,用编译预处理命令。定义格式:#define标识符常量举例:constdoublepi=3.1415926;#definePI3.1415926#defineNTUNanTongUniversity,标识符常量,使用标识符常量优点:提高程序的可读性。若为标识符常量取一个有意义的名字,将会提高它在程序中的可读性。提高程序对常量使用的一致性。若一个程序中多处使用同一个字面常量,则可能会误写成不同的值,发现这类错误非常费时。例如,使用圆周率时,可能在一处写成3.14,而在另一处写成3.1415,导致运算的精度不一致。增强程序的易维护性。若要调整程序中某个常量的值,对于字面常量来说,则要修改多处,还可能遗漏;对于标识符常量来说,只需在定义处修改。,变量,变量:在程序执行过程中其值可以被改变的量。变量三要素:变量名变量类型变量的值变量须先定义后使用。取变量的值称为对变量的引用。对变量赋值与引用统称为对变量的操作或使用。,变量的定义,变量定义指明了变量的类型和变量名。变量定义格式:,;类型名是变量的数据类型,可以是预定义数据类型,也可以是用户自定义数据类型;变量名1、变量名2,变量名n为标识符。举例1:intn;该语句定义(或称声明)了一个名字为n的整型变量。当程序执行到这行代码时,将为变量n分配4字节存储空间。,变量的定义,举例2:一行可定义多个变量,变量间用逗号分隔。intyear,month,day;doublex1,x2,x3;longsum,average,total;注意:变量定义是语句,因此变量定义可出现在程序中语句可出现的任何位置。但从程序可读性方面考虑,变量定义最好放在可执行语句之前。同一变量只能做一次定义,即不能重复定义。变量名应尽可能简短,并便于观其名知其意。,变量赋初值,通常,在首次使用变量时,变量应有确定的值。变量的这个取值称为变量的初值。变量赋初值的方法:在定义变量时,直接初始化。例如:intn=3;/n为整型,初值为3floatx=12.5f;/x为单精度实型,初值为12.5fcharc=U;/c为字符型,初值为字符Uinta,b,c=18;/可只对一部分变量赋初值inti(2);/i为整型,初值为2floaty(1.5f);/y为float型,初值为1.5f,变量赋初值,在定义变量后,用赋值语句赋初值。例如:floatpi,y;pi=3.14159f;/使变量pi的取值为3.14159fy=2.71828f;/使变量y的取值为2.71828f当然,变量的初值不一定是常量,也可以是含有变量的相应类型的表达式。例如:inta=0,b=a+1;变量定义后,若未指定初值,则其初值取决于所分配的存储器类型,或用默认值0或用随机值初始化。有关内容将在第6章讨论。,3.3运算符与表达式,运算符(也称操作符):描述对数据的操作。操作数:运算符操作的数据,可为常量和变量,也可为其他操作符的运算结果。例如,A+B称A和B为操作数,而把字符“+”称为加法运算符。运算符按功能分:算术运算符、赋值运算符、关系运算符、逻辑运算符和位运算符等。运算符按操作数的个数分:一元(目)运算符、二元(目)运算符和三元(目)运算符。运算符的优先级:运算符的运算优先关系,其意义和作用与数学中的运算优先级相同。,运算符的结合性,若运算符优先级相同,则其运算顺序由运算符的结合性确定。右结合:一个运算符对其操作数按从左到右的顺序执行所规定的运算。例如:18-36先取18,再取36,然后做减法运算。左结合:一个运算符对其操作数按从右到左的顺序执行所规定的运算。例如:A-=3先取3,再取变量A的值,两者作减法运算后,将结果赋给变量A。,运算符的目数,一元(目)运算符:一个运算符只能对一个操作数进行操作。例如,-5中的负号运算符。二元(目)运算符:一个运算符要求两个操作数。例如,5*10中的运算符“*”三元(目)运算符:一个运算符要求三个操作数。例如,条件运算符“?:”是唯一的三元运算符。同一运算符因操作数的个数不同,完成不同运算。例如,一元运算符“*”用于取变量,二元运算符“*”用于乘法运算等。,表达式,表达式:由运算符、园括号和操作数构成的合法式子,经过运算应有一个某种类型的确定的值。操作数可以是常量、变量或函数等。使用不同的运算符可以构成不同类型的表达式,如算术表达式、赋值表达式、关系表达式、逻辑表达式等。表达式书写:操作数、运算符、圆括号之间可以加空格,也可以不加空格。,算术运算符,算术运算符:-(负号)、+(正号)、+(加),-(减),*(乘),/(除),%(取余)。正、负号运算符的优先级相同,左结合。“*”、“/”、“%”优先级相同,右结合。加、减运算符的优先级相同,右结合。优先级顺序:正、负号高于“*”、“/”、“%”高于加、减可用园括号改变运算符的优先顺序,先计算园括号内的值,再计算园括号外的值。,算术运算符,除法运算符:若两边的操作数均为整数时,则做整除运算,即只取运算结果的整数部分。例如:3/4结果为03.0/4结果为0.75%(取余):计算两个整型操作数相除的余数。所得余数的符号与左操作数相同。例如:10%3结果为1-10%3结果为-14%-3结果为1,算术运算的溢出,算术运算的溢出:超出对应类型数据的表示范围。除法运算:若除数为0或实数运算的结果溢出,则系统认为产生了一个严重错误,将终止程序的执行。整数的加、减或乘运算:若结果产生溢出并不认为是一个错误,但结果已不正确。例如:intn=60000;cout232)的加和乘运算等。,算术表达式,算术表达式:由算术运算符、园括号和操作数构成的、符合C+语法规则的式子。算术表达式举例。设有说明:“inta=25,b=4,c=3;”,求下列表达式的值。a+b*c:因运算符“*”的优先级比“+”的高,故应先做乘法运算,再做加法运算,表达式的值为37。a*-b:因负号运算符“-”的优先级比“*”的高,并且“-”的结合性为左结合的,故先对b求负运算,然后再作乘法运算,表达式的值为-100。a*-b:注意,两个负号之间有空格,上述表达式等同于a*(-(-b),表达式的值为100。,算术表达式,使用算术表达式时应注意:表达式应简洁明了,没有多余的运算符。如上面的表达式a*-b应写成a*b。求值时,表达式中的每个变量都应有确定的值。C+的运算符较多,其优先级和结合性较复杂,在书写比较复杂的表达式而又忘记了运算符的优先级时,可适当增加配对的园括号,明确指定表达式的求值顺序。以上三点也适用于其它表达式。,+和运算符,+(增1)和-(减1)运算符:一元运算符,可放在变量的前面(前置),也可放在变量的后面(后置),用于快速实现变量的增1和减1操作。变量的类型可以是字符型、整型、实型、枚举类型和指针类型。前置的+(或-)表示先将变量的值增1(或减1),再把变量的值参加运算;后置的+(或-)表示先把变量的值参加运算,然后再将变量的值增1(或减1)。,+和运算举例,设inta=1;floatx=7,y;a+/或+a,等价于a=a+1。a的值为2。即“+”或“-”运算符仅用于使某个变量的值增1或减1,前置和后置的作用是一样的。y=x+a则y的值为9,x的值为8,a的值都为2。即“+”或“-”与其他运算符同时出现在表达式中时,前置与后置的作用是不同的。,+和运算符使用说明,+和-运算符只能用于变量。例如,a+、(b=1)+等都是正确的,而19、(x+6)+都是错误的。若出现多个“+”或“-”连写的情况,编译器则将前两个作为增1运算符或减1运算符。例如,“c=a+b;”等价于“c=a+b;”而不等价于“c=a+b;”。不应在表达式中滥用+和-运算符。原因是,滥用+和-运算符使表达式的可读性明显下降。,赋值运算符与赋值表达式,赋值运算符:左结合的双目运算符,其优先级比算术运算符、关系运算符和逻辑运算符的优先级低。赋值表达式:=作用:将的值赋给。举例。设a、b均为整型变量:a=3+5将3+5的值8赋给ab=a=3+5将3+5的值8赋给a,再将a赋给ba=5+b=5错:将5赋给5+b,而5+b不是变量a=5+(b=5)b为5,a为10,赋值运算符使用注意,不同编译器对赋值表达式的值的不同处理,可能使同一表达式在不同编译器中的运行结果不同。如:intx,s;s=(x=2)+(+x);在VC+6.0中,s的值为6,而在DevC+4.9中,s的值为5。而上述代码写成:intx=2,s;s=x+(+x);在VC+6.0和DevC+4.9中,s的值均为6。解决方法:对表达式进行分解。,复合赋值运算符,复合赋值运算符:二元算术运算符和位运算符与赋值运算符组合而成,优先级和结合性与赋值运算符相同。共有10个:+=、-=、*=、/=、%=、=、floatx;则x=a/bx为3.0fx=(float)a/bx为3.5fx=float(a)/bx为3.5fx=(float)(a/b)x为3.0fx=float(a/b)x为3.0f,强制类型转换,在计算表达式的值时,对于系统能正确自动转换的数据类型,则不必做强制类型转换。例如3+float(4*5.0)中,用float做强制类型转换就是多余的。如果不做强制类型转换会影响表达式求值的精度或不能完成相应的运算时,才须使用强制类型运算。例如:(int)13.5%(int)3.5。因13.5和3.5都是实数,而取余运算符要求两边的操作数都是整型数,这时当然必须使用强制类型运算符。,关系运算符,关系运算符:二元运算符,用来比较两个操作数之间的关系。共有六个:、=、=、!=其中前四个关系运算符的优先级相同,后两个关系运算符的优先级相同,但前四个关系运算符的优先级高于后两个。关系运算符的优先级比算术运算符低,但比赋值运算符高。关系运算符的操作数类型可以是字符型、整型、实型、枚举类型以及指针类型。注意:初学者常常误将=当作=使用。,关系表达式,关系表达式:用关系运算符将操作数连接起来的式子。关系表达式的值为整数0或1。关系成立时,结果为1;否则,结果为0。例如,表达式(1bc的含义并不是a大于b且b大于c,而是(ab)c,即先求出ab的值(为0或1),并使运算的结果继续参加后面的运算。例如,关系表达式432的结果为0,因为它等价于(43)2。,逻辑运算符,逻辑运算符:用于逻辑运算,用于复杂条件的表示。有三种:!逻辑非(单目运算符)a则表达式a+=2,b=3+a的值为7。此时,a的值为4,b的值为7。注意:并非所有的逗号都构成逗号表达式。例如,max(a+b,c+d)中,逗号只是一个分隔符。,条件运算符与条件表达式,条件运算符:唯一的三目运算符。条件表达式:?:条件表达式的运算过程:先求表达式1的值,若为0,则求出表达式2的值(不求表达式3的值),并把该值作为运算结果;否则求出表达式3的值(不求表达式2的值),并把它作为运算结果。举例:a=b?a:b求a、b两个数中的大数coutb?a大于bn:a小于等于bn);,sizeof运算符,sizeof运算符:单目运算符,用于计算操作数类型或表达式的值占用内存的字节数。格式为:sizeof()举例:sizeof(int)/4(在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年民办学校建筑物抗震鉴定合同
- 超声护理临床案例分析
- 云南省曲靖市沾益区第四中学2025年高二上数学期末学业质量监测模拟试题含解析
- 带状疱疹个案护理
- 痤疮合并囊肿结节个案护理
- 新疆兵地2025-2026学年数学高二上期末调研模拟试题含解析
- 眩晕性耳病的护理干预与康复
- 护理人员代谢知识培训重点
- 2026年中考英语核心考点(语法句型+重点短语+作文模板)
- 心血管护理新视角:心衰患者日常管理与康复训练
- 2025重庆水务环境控股集团管网有限公司招聘20人笔试考试参考试题及答案解析
- 七年级上册语文期中常考作文押题+范文
- 2025广西玉林市福绵区退役军人事务局招聘编外人员3人笔试考试参考试题及答案解析
- 膏药的营销方案
- 2025课堂惩罚 主题班会:马达加斯加企鹅课堂惩罚 课件
- ERP系统运行使用管理办法
- 2025年四川成都环境投资集团有限公司及下属公司招聘笔试参考题库含答案解析
- (高清版)DB13(J)∕T 8448-2024 热处理带肋高强钢筋应用技术标准
- 7月25日杨凯机构操盘步骤全面解析第二章节
- 采油工基本工作流程(重点)(ppt)
- 人工神经网络PPT课件
评论
0/150
提交评论