数据类型与表达式.ppt_第1页
数据类型与表达式.ppt_第2页
数据类型与表达式.ppt_第3页
数据类型与表达式.ppt_第4页
数据类型与表达式.ppt_第5页
已阅读5页,还剩7页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章 数据类型与表达式,基本数据类型:C+内部预先定义的数据类型 构造数据类型:用户使用已有的基本数据类型 和已定义的构造数据类型组成较 复杂的类型,如: 数组、结构体、共用体、枚举、 类及指针等。,基本数据类型中的基本型: 整型,说明符int 字符型,说明符char 浮点型(实型),说明符:单精度float 双精度double 长双精度long double 空值型,说明符void,用于函数和指针 除void外,基本类型前面可加的修饰符: signed 表示有符号型 unsigned 表示无符号型 long 表示长型 short 表示短型 4种修饰符均可作用于整型和字符型前,只有long可作用于浮点型前。,C+的基本数据类型,变量:在程序执行中其值可以改变的量 变量有3个基本要素:名字、类型和值,名字:变量名字是一种标识符,按标识符的规则给变量命名。 注意: C+中关键字不得做变量名 命名变量尽量做到“见名知意” 变量名长度不宜过长 变量名不能有空格符和除下划线之外的其他特殊字符 变量名不要与C+库中的函数名、类名和对象名相同,类型:每个变量都具有一种类型, (基本数据类型或构造数据类型) 在定义或说明变量时要指出它的类型。 注意:任何变量在使用之前必须进行类型说明。 定义或说明变量的格式: 类型说明符 变量名表; 例如, int a,b,c; double x,y; char c;,值 变量本身包含两个值:变量值和变量地址值。 前者是变量所表示的数据值,该值需要在定义变量后给它赋予; 后者是变量的地址值,该值是在定义或说明变量时,系统给变 量分配内存空间时确定的,它是一个内存的地址值。 变量值获取方法:赋初值和赋值。 例如,char c=a; int a,b; b=15; 注意: 一个变量获取数据值后,一直保留,直到下一次被更改为止。,10,b=10;,a=100;,100,在掌握变量概念时,搞清几个区别: 赋值与赋初值 变量值与变量地址值 有意义值与无意义值,常量:在程序中不被改变的量,整型常量 可用十进制、八进制和十六进制表示,均没有小数部分。 十进制整型常量:由09的数字组成,不能以0开始,没有前缀。 八进制整型常量:以0为前缀,由07的数字组成。 十六进制整型常量:以0x或0X为前缀,由09及af(或AF)组成。 长整型常量加后缀L(或l),无符号整型常量加后缀U(或u)。 例如: 72539L 12345U 654321ul 123 0123 0x123 0XA9 075 0Xff,浮点型常量(实型常量) 由整数部分和小数部分组成,只用十进制表示。 一般形式:由数字和小数点组成,不可省略小数点。 指数形式(科学表示法):在一般形式后加E(或e)和指数部分。 指数部分为可正可负的整数。E前必须有数字,E后必须是整数。 合法的:82. 12.3 .421 3.2E-2 .5e10 7e3 非法的:e-2 .E5 1e2.5 e 浮点型常量分为单精度(后缀为F或f)、双精度(不加后缀)和 长双精度(后缀为L或l)三类。 例如:5.67f 3.2e2F .2e1f 2.06 7.25e12 1e-6 1.21L 0.25e12L 3.0L,字符型常量 用一对单撇号括起来的一个字符表示的。如A,*, 等。 但C+有一些字符必须用转义序列表示。,注意区别: 数字与数字字符 字符0和字符0,字符串常量(字符串) 由一对双撇号括起来的字符序列,该序列可以是一个字符,可以是多个字符,也可以没有字符(空串)。串中可包括空格符、转义字符和其他字符,也可以包含汉字。串中双撇号应用”表示。,例如, “Please enter “Y” or “N”:” 表示的字符串是 Please enter “Y” or “N”:,字符串常量和字符型常量的区别: 表示形式不同 在内存中所占空间不同 具有的操作不同 存放两者的变量不同,整型常量 浮点型常量 字符型常量 字符串常量,常量的定义格式 可将一种内容始终保持不变的量定义为一个常量,格式: const =;,例如, const double pi=3.14159; const char C=Q; const float e=2.718f;,定义常量时应该做到: .确定常量名 .指出常量类型 .必须进行初始化 (即给出常量值) .加常量类型说明符const,也可以用c语言编译预处理的宏定义命令定义符号常量,如: #define pi 3.14159,const double P=2*pi; const int number=50*sizeof(int);,输入和输出 由I/O流库提供(见第12章),键盘输入 使用流对象cin和提取运算符,从cin的输入流中通过提取 运算符获取各种不同类型的数据,给相应类型的变量赋值。 输入流的数据项用默认分隔符空格符进行分隔。 屏幕显示 使用标准输出流对象cout和插入运算符,可以输出各种 不同类型表达式的值。,例如,int a=1; char c=A; cout“a=”a+1,“c=”cn; 输出显示: a=2,c=A,见例2.1和2.2,运算符和表达式,运算符种类繁多: 算术运算符 关系运算符 逻辑运算符 位操作运算符 赋值运算符 其他运算符,单目:-,+,+,- 双目:+,-,*,/,%(仅适用于int型),增1(+)减1(-)运算符特点: 两种作用:前缀和后缀 两个值:变量值和表达式值 单目运算符:优先级较高 只能作用于变量:不能用于常量或表达式,,=,=,=,!= 前4种运算符的优先级高于后2种,单目:! 双目:&,|,逻辑位单目: 移位:,简单:= 复合:+=,-=,*=,/=,%=, =,&=,|=,=,三目:?: 取地址:& 强制类型:() 逗号:, 取内容:* 运算符sizeof 成员选择:.,- 运算符() ,,优先级是用来决定运算符在表达式中运算顺序的。 在由相同优先级的运算符组成的表达式中,运算顺序用结合性来确定。,例如,int a=1,b=2,c=3; a-b+c; a=b=c=5;,表达式是由运算符和操作数组成的式子。 操作数包含常量、变量、函数和其他一些命名的标识符。,表达式种类丰富: 算术表达式 逻辑表达式 关系表达式 赋值表达式 条件表达式 逗号表达式,书写表达式时注意: .连续出现多个运算符时,最好用空格符分开。 否则系统根据“尽量取大”的原则进行拆分。 .运算符的优先级记不清时,可使用圆括号。,例如, int i(3),j(5); i+ +j i+j i+ +j i+j?,例如,已知:int i(10); i-3+9/5 i&!i&i- i!=10 i+=5 i10?i+:i- i=5,i+-3,i,任何一个表达式都有确定的值和类型。 计算表达式值时,应注意: .确定运算符的功能 .确定运算符的计算顺序 .注意某些表达式的约定 如整型数相除和逻辑表达式的计算,分析下列程序的输出结果: #include void main() int a; a=123+3.2e2-3.6/6-6/8; coutaendl; double b; b=123+3.2e2-3.6/6-6/8; coutbendl; int c(7),d(4); a=c-+d; coutc,d,aendl; ,注意: 算术表达式类型为操作数中类型较高者的类型 某些强制类型转换,输出结果: 442 442.4 6,5,2,unsigned int a(0x2a),b(18); a ,输出结果: 2 0 -2 -1,2 -1,0,char c1(k),c2(p); int n=c1c2; coutnendl; n=c1-1=c2; coutn+1endl; n=u=v-1; coutnendl; cout(a=A)+(812)+(c2-c1!=0)endl; ,输出结果: 0 2 1 2,int a,b,c; a=b=c=8; !a ,输出结果: 8,8,8 8,8,8 8,8,8 7,8,8,int i(8),j(4),k; k=ij?i:d)j?i:d),sizeof(double)endl; ,输出结果: 8,5,4 8,5,13 8 8,8,int a(6),b(4),c(2); a+=b*=c-=3; couta,b,cendl; a*=b/=c+=a; couta,b,cendl; a-=b+=c*=2; couta,b,cendl; a=b=c=5; c=(a+=4)+(b+=2)-1; coutcendl; ,输出结果: 2,-4,-1 -8,-4,1 -6,-2,2 15,注意:赋值运算符有副作用 结合性从右到左 优先级较低,仅高于逗号,int i,j,k; i=8,j=4,k=i+j+4; coutj?+i:+j); couti,j,kendl; cout(i=9,j=6,i ,输出结果: 8,4,16 2,2,4 3,6,6 1,类型转换,保值的隐式转换 双目运算符的操作数要类型一致,低类型转换为高类型。 short,char float intunsignedlongunsigned longdoublelong double 强制转换 .显示强制转换 格式: () () .隐式强制转换 赋值表达式中,右值表达式的类型隐式转换为左值的类型。 被调用函数有返回值时,return后面表达式类型转换为函数的类型。见函数一章,隐式转换和强制转换 有保值和非保值之分,例如, int a=3; double b=5.3; a+b;,例如,double d=21.83; int a; a=(int)d; /或a=int(d);,例如,int a(15),b; double d; d=4.62+double(a); b=3+a; 注意:强制转换只是暂时的。,例如,int a; double d(12.75); a=d;,数据类型练习 1、下列各种基本数据类型中, 是无符号整型的。 A.long int B.unsigned int C.short int D.int 2、在32位机中,长双精度浮点数在内存中存放时占 个字节。 A.4 B.6 C.8 D.16 3、下列变量名中,是非法的。 A.A Long B.MyCar C.my_car D.a48 4、下列变量名中,是合法的。 A.56A B._abc C.d-Ptr D.0x7a 5、下列常量中,是十六进制表示的int型常量。 A.78 B.063 C.x56 D.0x7a 6、下列常量中,不是字符常量。 A. 007 B. a C.n D. “x” 7、下列字符串常量中,是非法的。 A.“ ” B.“”a” ” C.“mn” D.“xyn” 8、在内存中存储“A”和A各占个字节。 A.1 1 B.1 2 C.2 1 D.2 2 9、C+语言中,合法的长整型常数是。 A.0L B.4962710 C.0.054838743 D.2.1869e10 10、已知 int a=3,b=4;将a+b的值输出显示到屏幕上,下列各种实现方法中, 是正确的。 A.couta +bendl; B.cout “a+b”endl; C.couta+bendl; D.couta +bn;,分析下列程序的输出结果: (1) #include void main( ) int a=90; float b=34.92; char c=B; double d; d=12.7865; cout void main( ) const char CH=P; const long LO=1234567; const double DO=1.98765; coutCHendlLOendlDOendl; ,(3) #include void main( ) double dd; dd=1.5e6; coutddendl; dd=.5e-2; coutddendl; cout“abcrmnptxyzbabcn”; cout“abc|mnpxyzn”; ,运算符和表达式练习 1、下列各种运算符中,可以作用于浮点数。 A.+ B.% C. D.& 2、下列各种运算符中,优先级最高。 A.+ B.& C.= = D.*= 3、下列各种运算符中,优先级最低。 A.!= B.| C.| D.?: 4、下列各种运算符中,结合性从左到右。 A.三目 B.单目 C,赋值 D.比较 5、已知 int a(5)。下列表达式中,是非法的。 A.+a B.a- C.-a D.-(-a) 6、已知 int a(5)。下列表达式中,是合法的。 A.5.6%4 B.a+1=5 C.!a*=5 D.a=2,a+2,2*a 7、下列各种类型转换中,是不保值的转换。 A.int型转换为double型 B.char型转换成int C.double型转换成int型 D.float型转换成double 8、下列各种表达式中,的值不是逻辑值。 A.算术表达式 B.关系表达式 C.逻辑表达式 D.逗号表达式 9、下列各种类型中,类型最高。 A.unsigned B.unsigned long C.long D.double 10、下列各种表达式中,表达式值为0。 A.!0 B.1&1|0 C.35?0:1 D.5/15,分析下列程序的输出结果: (1) #include void main( ) unsigned int a=026,b=0x3b; cout=4) void main( ) int i(10),j(8); cout+i-j-endl; i=10,j=8; cout(i=i*=j)endl; i=10,j=8; cou

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论