




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二章 基本数据类型与表达式主要内容n数据类型的概念nC+基本数据类型n常量与变量n操作符n表达式数据类型的概念n数据类型包含两个集合:n值集:描述了该数据类型包含哪些值(包括这些值的结构);n操作(运算)集:描述了对值集中的值能实施哪些运算。例如:整数类型值集:由整数所构成的集合操作集:加、减、乘、除等运算n数据类型可以分为:n简单数据类型:值集的数据是不可再分解的简单数据,如:整数类型、实数类型等;n复合数据类型:值集的数据是由其它类型的数据按照一定的方式组合而成,如:向量、矩阵等。 数据类型的概念(续)C+数据类型 n基本数据类型 是C+语言预先定义好的数据类型,又称为标准数据类型或内置
2、数据类型(built-in types),简单数据类型。n构造数据类型 由用户利用语言提供的类型构造机制从其它类型构造出来的数据类型,复合数据类型(枚举类型除外)。-结构类型n抽象数据类型由用户利用数据抽象机制把数据与相应的操作作为一个整体来描述的数据类型,复合数据类型。-类 C+基本数据类型对应着能由计算机直接表示和处理(机器指令能对它们直接进行操作)的数据类型 n 整数类型n 实数类型n 字符类型n 逻辑类型n 空值类型 整数类型 nint 和计算机的字长有关nshort int或short 2个字节nlong int或long 4个字节nunsigned int 或 unsignednu
3、nsigned short int 或 unsigned shortnunsigned long int 或 unsigned long“short int”的范围的范围 “int”的范围的范围 “long int”的范围的范围最大正整数比相应的有符号整数类型所表示的最大正整数要大最大正整数比相应的有符号整数类型所表示的最大正整数要大 在计算机内部通常用补码补码表示:n 正整数的补码为它的二进制原码表示;n 负整数的补码为把相应正整数的二进制表示中各个二进制位取反后得到的整数加1。整数类型的内部表示实数类型(浮点型)n float (单精度型)4个字节n double (双精度型)8个字节n
4、long double(长双精度型)8或10个字节“float”的范围的范围 “double”的范围的范围 “long double”的范围的范围实数类型的内部表示n 在计算机内部,实数表示成:a2b, a:尾数;b:指数n 在实数的内存空间中存储的是尾数和指数两部分,它们均采用二进制表示。n 有些十进制小数是不能精确表示成二进制小数的。例如,十进制小数0.1就无法精确地用二进制表示。字符类型n charn signed charn unsigned charn wchar_t 字符类型的内部表示n字符在计算机中存储的是它的编码。C+允许把字符类型的数据(字符的编码)当作整数类型整数类型数值进
5、行算术运算。n 对signed char,把字符编码看成有符号整数,最高位看作符号位。n 对unsigned char,把字符编码看成正整数。n wchar_t 用于汉字这样的大字符集,适用于国际化程序设计。逻辑类型n用于描述“真”和“假”这样的逻辑值,它们为条件表达式的计算结果,分别表示条件的满足和不满足。n 在C+中,逻辑类型用bool表示,它的值只有两个:true和false,分别对应“真”和“假”。n 在C+中又常常把逻辑值看成整数类型整数类型值,ntrue对应1、false对应0,n逻辑值也可以参加算术运算。 空值类型 在C+中提供了一种值集为空的类型:空值型(void),用以表示:
6、n 没有返回值的函数的返回类型n 通用指针类型(void *) 在C+中,常常n把各种int型、char型以及bool型统称为整型整型(integral types);n把整型和实数类型统称为算术类型算术类型(arithmetic types)。整型(integral types)和算术类型(arithmetic types)sizeof在不同规格的计算机上,各种数据类型的数据的取值范围可能不一样。n 可以通过“sizeof(类型名)”或“sizeof(变量名)”来计算各种数据类型的数据所占的内存空间大小(字节数) 。n 标准库的头文件climits(或limits.h)定义了所有整型的取值范
7、围,n 标准库的头文件cfloat(或float.h)定义了所有实数类型的取值范围。typedef C+允许在程序中给已有数据类型取一些别名,格式为: typedef ; 例如,下面为类型unsigned int取了一个别名Uint: typedef unsigned int Uint; ntypedef并没有定义新类型。n 便于程序的阅读和编写,并使程序简明、清晰和易于修改。数据的表示 在程序中,数据以两种形式存在:常量和变量。n常量:在程序执行过程中不变(或不能被改变)的数据,如:圆周率、一个星期的天数等。n 变量:在程序执行过程中值可变的数据,如:2*PI*r中的r。常量C+把常量分为:
8、整数类型、实数类型、字符类型、逻辑类型、字符串类型以及指针类型。在C+程序中,常量可以用两种形式表示:n 字面常量:在程序中通过直接写出常量值来使用的常量,通常又称为直接量(literal)。n 符号常量(命名常量):通过常量定义给常量取一个名字并指定一个类型,在程序中通过常量名来使用这些常量。 字面常量(直接量)C+的字面常量有:n 整数类型常量n 实数类型常量n 字符类型常量n 字符串常量整数类型字面常量在C+程序中,整数类型常量可以用十进制、八进制或十六进制形式来书写:n 十进制形式。由09数字组成,第一个数字不能是0(整数0除外),如:59,128,-72为整数类型常量的十进制表示;n
9、 八进制形式。由数字0打头,07数字组成,如:073,0200,-0110为八进制表示;整数类型字面常量(续)n十六进制形式。由0 x或0X打头,09数字和AF(或af)字母组成,如:0 x3B, 0 x80, -0 x48,为十六进制表示 n 可在整数类型常量的后面加上l或L,表示long int类型的常量,也可在整数类型常量的后面加上u或U,表示unsidned int类型的常量n默认为int型实数类型字面常量在C+程序中,实数类型常量采用十进制形式书写(在计算机内部采用二进制存储)。实数类型常量有两种表示法:小数表示法和科学表示法。n 小数表示法:由整数部分、小数点“.”和小数部分构成,
10、如:456.78, -0.0057,5.,.5。n 科学表示法:在小数表示法后加上一个指数部分,指数部分由E(或e)和一个整数类型数构成,表示基数为10的指数,如:4.5678E2, -5.7e-3等。实数类型字面常量(续)n实数类型常量默认为double型。可以在实数类型常量后面加上F(f)以表示float型,如:5.6F。也可在实数类型常量后面加上L(l)表示long double型,如5.6L。字符类型字面常量 字符常量是由两个单引号()括起来的一个字符构成,其中的字符写法可以是:n字符本身,如:An转义序列,由打头的一串符号n字符的编码n八进制:ddd,如:101n十六进制:xhh,如
11、:x41n特殊表示,如:n(换行符)、r(回车符)、t(横向制表符)、b(退格符)等 p20字符类型字面常量(续)n注意:n反斜杠()应写成:n单引号()应写成:n双引号()可写成:或 字符串类型字面常量字符串常量是由两个双引号()括起来的字符序列构成,其中的字符的写法与字符类型常量基本相同,即可以是字符本身和转义序列。如: This is a string.Im a student.Please enter Y or N:This is two-line nmessage!字符常量与字符串常量的区别n字符常量表示单个字符,其类型为字符类型(char);而字符串常量可以表示多个字符,其类型为常
12、量字符数组。n字符常量用单引号表示;而字符串常量用双引号表示。n对字符常量的操作按char类型进行;对字符串常量的操作按字符数组的规定。注意:在存储字符串时,会在最后一个字符后面加上一个符号0. 即字符串结束符因此,字符常量在内存中占一个字节;字符串常量占多个字节,其字节数为:字符串中的字符个数加上1。AAAA0n“ef0123n89”占多少内存单元?(03秋)9n符合C+语法规则的常量是?(02秋)n4e0.5n87n0X5A1.“”3,4符号常量在程序中使用常量时,除了采用字面常量形式外,还可以首先通过常量定义给常量取一个名字并指定一个类型;然后,在程序中通过常量名来使用这些常量。符号常量
13、的定义格式为:const =;或#define 例如:const double PI=3.1415926; 或,#define PI 3.1415926变量在程序中,其值可以改变的量称为变量。变量可以用来表示可变的数据。例如:在计算圆周长的表达式2*PI*r中,半径r就是一个可变的数据,它可能是通过用户输入得到,也可能由程序的其它部分计算得到。 变量的基本特性n变量名:用标识符表示n类型:指定变量能取何种值、对其能进行何种运算(操作)以及所需内存空间的大小等。 n值:在类型的值集范围内可变n内存地址变量的定义与声明C+语言规定:程序中使用到的每个变量都要有定义。格式为: ;或者 =;例如:in
14、t a=0;int b=a+1;double x=0.5; 或:int a=0,b=a+1;double x=0.5;变量的定义与声明(续)在C+程序中使用变量之前,必须对使用的变量进行声明。变量定义属于一种声明,称为定义性声明。变量声明的另一种形式为:extern ;变量声明变量的定义与声明(续)变量定义与声明的区别是:n 变量定义要给变量分配空间,变量声明则否。n 变量定义可以给变量赋初值(对变量进行初始化),变量声明则否。如:n int a=1,b=2,c=3; /OKn extern int d=4; /Errorn 在整个程序中,一个变量的定义只能有一个,而对该变量的声明可以有多个。
15、 /file2.cppvoid g() /定义 extern int x,y; /声明 int z; /定义 z = x + y;/file1.cppint x=0; /定义void f() /定义 extern int y; /声明 x = y + 1;int y=0; /定义int main() /定义 extern void g(); /声明 y = x + 2; f(); g(); return 0;变量值的输入#include /插入一些在标准库中定义的输入/输出操作所需要的声明using namespace std; /C+标准库中的程序实体是在名空间std中定义的。int i;d
16、ouble d;.cin i; /从键盘输入一个整数类型数给变量icin d; /从键盘输入一个双精度浮点数给变量d上述的键盘输入也可以写在一条语句中:cin i d;n多个变量值输入时,用空格、回车、横向制表符分隔。输入数据应和变量的类型一致n否则按照变量类型来赋值 p24例子当从键盘上输入1.5 10时,写出下面程序的执行结果 #include void mian() int a,b,c; char ch; cinachbc;/从键盘上输入1.5 10 coutaendlchendlbendl精度高;n显式转换是指由写程序的人在程序中用类型转换操作符明确地指出转换。 常规算术转换规则常规算
17、术转换规则(usual arithmetic conversions) p25n如果其中一个操作数类型为long double,则另一个转换成long double。n否则,如果其中一个操作数类型为double,则另一个转换成double。n否则,如果其中一个操作数类型为float,则另一个转换成float。n否则,先对操作数进行整型提升转换整型提升转换(integral promotions),如果转换后操作数的类型不一样,则按e)以后的规则再进行转换。整型提升转换整型提升转换(integral promotions)n对于char、signed char、unsigned char、sho
18、rt int、unsigned short int类型,如果int型能够表示它们的值,则这些类型转换成int,否则,这些类型转换成unsigned int。nbool型转换成int型,false为0;true为1。nwchar_t和枚举类型转换成下列类型中第一个能表示其所有值的类型:int、unsigned int、long int、unsigned long int。n如果其中一个操作数类型为unsigned long int,则另一个转换成unsigned long int。n否则,如果一个操作数类型为long int,另一个操作数类型为unsigned int,那么,如果long int
19、能表示unsigned int的所有值,则unsigned int转换成long int,否则,两个操作数都转化成unsigned long int。n否则,如果一个操作数类型为long int,则另一个操作数转换成long int。n否则,如果一个操作数类型为unsigned int,则另一个操作数转换成unsigned int。显式转换(强制类型转换)显式转换(强制类型转换)显式转换是指在程序中用类型转换操作符显式地指出转换,显式转换又称强制类型转换。其格式为:()或()再例如:int i=2147483647; int j=10;(double)i+j例如:int i=-10;unsig
20、ned int j=3; i+ (int) j关系与逻辑操作符关系与逻辑操作符 程序中经常要根据某个条件来决定其后续的动作,这里的条件为对数据进行比较和逻辑运算。 n关系操作符对数据进行大小比较,结果为bool类型的值:true或false。 (大于), =(不小于), 2的结果为true4.3 1.2的结果为falseA B的结果为truefalse true的结果为true应避免对两个浮点数进行“=”和“!=”比较运算 x = y可写成:fabs(x-y)1e-6关系与逻辑操作符(续)关系与逻辑操作符(续) n 逻辑操作符 逻辑操作符实现逻辑运算,用于复杂条件的表示中。 !(逻辑非)、&a
21、mp;(逻辑与)、|(逻辑或) 例如例如: !(a b)(age 30) (ch 9) 位操作位操作 在在C+中提供了对整型和枚举类型数据按操作数的各个中提供了对整型和枚举类型数据按操作数的各个二进制位分别进行运算的操作,包括:逻辑位运算和移位运算。二进制位分别进行运算的操作,包括:逻辑位运算和移位运算。 n 逻辑位操作逻辑位操作 (按位取反), &(按位与), |(按位或), (按位异或)0 1,1 00|0 00|1 11|0 11|1 100 001 110 111 00&0 00&1 01&0 01&1 1例:例: s & 0 x10 /
22、判别s的第5位(从低位数)是0还是1s = (s | 0 x40) /把第7位设置为1s = (s & 0 xF7) /表示把第4位设置为0 位操作位操作n 移位操作移位操作 (右移)n左移:把第一个操作数按二进制位依次左移由第二个操作数所指定的位数。左移时,高位舍弃,低位补0。例如:0 x3F61 2的结果为0 xFD84 n右移:把第一个操作数按二进制位依次右移由第二个操作数所指定的位数。右移时,低位舍弃,高位按下面规则处理:n对于无符号数或有符号的非负数,高位补0 n对于有符号数的负数,高位与原来的最高位相同 赋值操作赋值操作通过赋值操作来改变变量的值。通过赋值操作来改变变量的值
23、。n 简单赋值操作符na = b n当赋值操作的两个操作数类型不同时,把右边操作数转换成左边的操作数类型。n 复合赋值操作符 +=,-=,*=,/=,%=,&=,|=,=,= na #= b 功能上等价于:a = a # bn有时能提高效率,a为表达式时, a #= b 中的a只计算在C+里,赋值是一种运算,结果是左边的操作数其它操作符其它操作符n 条件操作符(?:) d1?d2:d3 n如果d1的值为true或非零,则运算结果为d2,否则为d3。 n 逗号操作符 d1,d2,d3,. n从左至右依次进行各个运算,操作结果为最后一个运算的结果n逗号操作表示的计算更加清晰例如:x = a
24、+b, y = c+d, z = x+yn sizeof sizeof()或 sizeof() n计算某类型的数据占用的内存大小(字节数) 表达式表达式n 定义 表达式是由操作符、操作数以及圆括号所组成的运算式。其中,操作数可以是常量、变量或函数调用,也可以是用圆括号括起来的表达式。例如: (a+b)*c/12-max(a,b) n 表达式类型n算术表达式n关系/逻辑表达式n地址表达式等 左值表达式和右值表达式n根据表达式能否放在赋值操作的左边左值表达式有明确的内存地址该地址中内容可被修改n+前置、-前置、= 可以改变操作数的值n+前置、-前置不改变操作数的值,将操作结果存在一个临时变量中变量x,+x,-x,x=? 为左值表达式常量,x+,x- 不是左值表达式n定义了int k,j;没有语法错误的表达式是 (05秋)n(k+)+ n(k+3)=5nk-/=5nk-jD操作符的优先级和结合性操作符的优先级和结合性n 对相邻的两个操作符,按下面规则确定(p36):n圆括号:圆括号内的先运算n优先级:优先级高的先运算n结合性:相同优先级按左结合或右结合
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 院外延伸服务总结与市场需求分析计划
- 2025年矿用防爆电器设备合作协议书
- 《平行四边形和梯形-平行与垂直》教学设计-2024-2025学年四年级上册数学人教版
- 假期外出安全教育
- 五年级下册数学教案-2.1 分数的意义 第2课时 青岛版
- 财务印章管理制度制度
- 2023四年级数学上册 数学好玩第3课时 数图形的学问教学实录 北师大版
- 应聘教务管理简历
- 一年级上册数学教案-一共有多少 北师大版
- 二年级下册数学教案-10算式中的推理(数字迷)-青岛版
- 保险行业职业道德培训
- 新能源汽车技术(第2版)高职全套教学课件
- 玩转微木工:零基础木作小件
- 中国数据中心产业发展白皮书(2023年)
- 子宫内膜异位症的疼痛管理
- 人工智能与警务决策
- 护理查房自身免疫性脑炎
- 民警违法违纪的预防策略
- 煤炭自燃的自由基反应机理
- 钢-混凝土组合结构工程施工技术标准
- 计算机在材料科学与工程中的应用
评论
0/150
提交评论