第02章数据类型、运算符和表达式.ppt

上传人:laozhun 文档编号:2228443 上传时间:2023-02-03 格式:PPT 页数:59 大小:471.50KB
返回 下载 相关 举报
第02章数据类型、运算符和表达式.ppt_第1页
第1页 / 共59页
第02章数据类型、运算符和表达式.ppt_第2页
第2页 / 共59页
第02章数据类型、运算符和表达式.ppt_第3页
第3页 / 共59页
第02章数据类型、运算符和表达式.ppt_第4页
第4页 / 共59页
第02章数据类型、运算符和表达式.ppt_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《第02章数据类型、运算符和表达式.ppt》由会员分享,可在线阅读,更多相关《第02章数据类型、运算符和表达式.ppt(59页珍藏版)》请在三一办公上搜索。

1、目 录,第1章 C+概述第2章 数据类型、运算符和表达式第3章 简单的输入/输出第4章 C+的流程控制第5章 函数第6章 编译预处理第7章 数组第8章 结构体、共同体和枚举类型第9章 指针和引用第10章 类和对象第11章 类和对象的其他特性第12章 继承和派生第13章 多态性第14章 输入/输出流第15章 模板,第一部分 面向过程的程序设计,第二部分 面向对象的程序设计,第2章 数据类型、运算符与表达式,简单地说:程序=数据结构+算法,C+程序的构成:(1)数据描述(2)执行步骤(算法),例1.1一个简单的C+程序#include void main(void)int num,square;c

2、out num;square=num*num;cout num的平方为:square n;,下面学习:程序的各种语法元素,2.1 保留字和标识符,2.1.1 保留字(Reserved Word or Keyword)C+语言自身使用的,已有特殊含义和用途的英文单词称为保留字或关键字。如例1.1中的类型说明符 int,用于定义整型变量。,用户不能将其作为自己的变量名或函数名使用。,2.1.2 标识符,标识符(identifier):有效字符序列,用来标识用户自己定义的 变量名、符号常量名、函数名、数组名、类型名、文件名等,命名规则:只能由字母、数字和下划线三种字符组 成,且第一个字符必须为字母或

3、下划线 最大长度为 1 247 个字符。,如:MyName average GetDay StudentName _above Lotus_1_2_3,非法标识符如:M.D.John$123 3Dmax,合法标识符如:(有时用匈牙利命名法),例:#include void main(void)int a,b,sum;/*定义变量*/a=123;b=456;sum=a+b;coutsum is sumn;,2.2 C+的基本数据类型,数据类型,基本类型,导出类型,整型实型字符型空类型(无值型),单精度型双精度型,数组类型指针类型结构体类型共用体类型枚举类型,不论是变量还是常数,在计算机内部都要按

4、照某种形式存放,存放形式由数据类型决定。,以上基本类型数据占内存字节不相同,因此数值范围也不同,见表 2-1 及表 2-2,对基本类型,可以加修饰,如:,int:signed int unsigned int short int:signed short int unsigned short intlong int:signed long int unsigned long int,再加修饰,如:,注意:int 型变量与 unsigned int 型变量的区别,2.3 常量和变量2.3.1 常量,常量:在程序运行过程中,其值不能被改变的量,1.整型常量,十进制整数 123,-456,八进制整数

5、 0123,-011,十六进制整数 0 x123,-0 xAB,长整型与无符号型常数 12L,0234L,-0 xABL 12U,0234U,0 xABU,2.实型常量(在内存中以浮点形式存放),(均为十进制,无数制区分),小数形式:必须有小数点 1.65 1.123,指数形式(也称为科学表示法):如 123000.0 可写为 1.23e5 0.00368 可写为 3.68E-3 e 或 E前必须有数字,1000写为 1e3 不能写为 e3,3.字符型常量,用于表示ASCII字符,见附录A。,在内存中存放对应的ASCII码值,如 a 的ASCII码为 97,则在内存中用一个字节存放:,在源程序

6、中最基本的表示形式为:单引号括起来的一个字符,如:a A?,0 1 1 0 0 0 0 1,对于不可打印的字符,可以用转义字符形式表示。,注意:n 与 n 的区别!,转义字符:以反斜杠“”引导的特殊形式的 非显示字符或表示特定意义的字符常量,n t b ddd xhh 见表 2-3,注意:字母 A 的 ASCII 码是(65)10=(101)8=(41)16在程序中表示字母A,可以有三种方法:A 101 x41,n 表示一个控制字符,n 表示一个字母。,4.字符串常量-用双引号括起来的字符序列(在内存中存放字符序列的ASCII码值,最后加一个结尾标志),如:How do you do.CHIN

7、A a,字符串结束标志符是:0,注意:a 和 a 是不同的。,符号常量:用标识符代表一个常量,必须先定义后使用。,例:定义标识符常量#define PRICE 30#define PI 3.1425926#define S Chinaconst f loat pi=3.14,2.3.2 符号常量,例2.1 符号常量的使用#include#define PI 3.1425926void main(void)double angle,radian;cin angle;radian=angle*PI/180;/角度弧度cout radian n;,好处:(1)提高程序的可读性。(2)程序中使用多处,

8、一改全改。,2.3.3 变量,变量:其值可以改变的量。,变量名:一个变量的符号名,由标识符构成。一个变量占据内存一定的存储单元,在存储单元中存放该变量的值。,int a,b;/定义2个整型变量a,bunsigned u;/定义1个无符号整型变量ufloat f;/定义1个单精度实型变量double d;/定义1个双精度实型变量char c1,c2,c3;/定义3个字符型变量c1,c2,c3,1.定义变量,注意:,(1)区别大小写:如 sum 与 Sum 为不同的变量名。,(2)先定义后使用:分配单元、确定类型、语法检查,(3)在一个程序单元中不能重复定义。,(4)关键字(保留字)不能作为标识符

9、。,(5)最大长度随不同的 C+语言系统而定:VC+识别前 247 个字符,超过无效。,(6)按义取名。,2变量赋初值给变量赋初值的方法有两种:(1)变量定义后,用赋值语句赋初值。例如:int a,b;a=12;b=24;char c1,c2;c1=A;c2=B;,(2)在定义变量的同时,直接赋初值(称为变量的初始化)。例如:int a=12,b=-24;char c1=A,c2=B;,2.4 基本运算符和表达式,2.4.1 C+运算符及表达式简介,完成对常量、变量作运算的符号称为运算符。把参与运算的对象称为操作数。操作数可以是常量和变量等。,各种运算符见表 2-4,一元运算符、二元运算符、三

10、元运算符,2.4.2 算术运算符和算术表达式,基本算术运算符:,+-*/%,/整数运算时为整除,结果为整数。,%(模运算或称求余运算)必须为整型数据。例:7/3 结果?7.0/3 结果?7%3 结果?,22.3333331,由运算符和操作数构成表达式:如:a+b a*(c+d)a*c+d,2.4.3 运算优先级和结合性,优先级:,对于同一表达式中出现多个运算符,先算 哪一个。,结合性:,在两种运算优先级相同时,“自左向右”还是“自右向左”运算称为结合性。,如:算术运算符的优先级与结合性,优先级:,+-较低*/%较高,结合性:,自左向右,例:表达式:6/3*2“自左向右”或“自右向左”运算结果不

11、同,2.4.4 关系运算符和关系表达式,“关系运算”实际上就是“比较运算”,关系运算符及其优先次序,=!=,小于小于等于大于大于等于恒等于不等于,关系运算符及其优先级说明,a=bc 等效于 a=(bc),ca+b 等效于 c(a+b),算术关系(和=)关系(=和!=),关系表达式,1.用关系运算符连接两个表达式,int a=1,b=2,c=3;则表达式 ab 的值为 0则表达式 ba+c 的值为 1,2.关系表达式的值(运算结果)是逻辑值:“真”或“假”1 表示真 0 表示假,关系运算符的结合性:自左向右,2.4.5 逻辑运算符和逻辑表达式,逻辑运算符及其优先级:,C+语言提供三种逻辑运算符:

12、&逻辑“与”|逻辑“或”!逻辑“非”,单目运算符,即只有一个操作数。如!a,逻辑运算的意义:,a&b,当 a、b 均为真时,表达式的值才为真,a|b,当 a、b 均为假时,表达式的值才为假,!a,当 a 为假,!a 为真;反之,当 a 为真时,!a 的值为假,逻辑运算符的优先次序:,!(非)算术 关系&|,逻辑表达式:用逻辑运算符将表达式连结起来,(2)C+编译系统在给出逻辑运算结果时,以数值 1 代表“真”以数值 0 代表“假”,(1)运算时,在判断一个量是否为“真”时,以非0 代表“真”以0 代表“假”,例如:已知 a=4则!a 的值是 0 已知 a=0,b=5则 a&b 的值是 0则 a

13、|b 的值是 1则!a&b 的值是 1,注意:,注意:在C+程序中,欲表示数学关系 0 x10,C+的逻辑表达式必须写成 0=x&x=10,而不能写成 0=x=10。,为什么?,2.4.6 位运算符和位运算表达式,位运算是对整型数据的运算(可以操作到位),符号位参与运算,主要用于系统程序设计。,位运算符共有6 种:它们是:按位与(&)按位或(|)按位异或()按位取反()左移(),举例:按位“与”例如:已知:char a=3,b=2,c;求:c=a,此时,可将a、b、c看成是一个字节长度的整型数。,其它位运算,自学。,2.4.7 自增、自减运算符和表达式,使变量的值加 1 或减 1 的运算,如:

14、+i,-i,在使用 i 之前加或减 1,i+,i-,在使用 i 之后加或减 1,int i=3,j;j=+i;,运算后 i=?,j=?,int i=3,j;j=i+;,运算后 i=?,j=?,注意:,只能用于变量,不能用于常量和表达式,如:3+;(a+b)+;错误,i=4,j=4,i=4,j=3,2.4.8 赋值运算符和赋值表达式,1赋值运算符“=”是赋值运算符,赋值表达式格式:,求解过程:求出 的值,赋给,赋值表达式的值:为 的值,如:a=b+c,还可以是另一个赋值表达式,,如:a=b=5 a=5+(c=6)a=(b=4)+(c=6),如果 a 初值为 2,表达式结果?,结果为 7,如:a=

15、3,3是最简单的表达式,i=i+1,它不同于“等于号”,注意优先级 与结合性,b=c=d=a+5,自右向左,表达式结果分别为:?5 11 10,2.复合赋值运算符,复合赋值运算符,x*=y+8,等价于 x=x*(y+8),x%=3,等价于 x=x%3,x/=9,简写为:a+=3,a=a+3,简写为:a-=b,a=a-b,同理:,赋值运算符 以及 复合赋值运算符的运算优先级比算术运算符优先级低,运算结合性为自右向左。,等价于 x=x/9,例:a+=a-=a*a,如果 a 初值为 2,表达式结果?a+=a-=a*a,结果 a 的值为-4表达式的结果也为-4,2.4.9 逗号运算符和逗号表达式,逗号

16、运算符:,逗号表达式:,.,如:a=3*5,a*4,a+5,逗号运算符优先级最低,结合性:自左向右,求解过程:依次计算、.的值。,逗号表达式的值:为 的值,运算结束后:a 的值为 15 整个表达式的值为 20,a=3*5,a*4,x=(a=3,6*3),赋值表达式,x=a=3,6*3,逗号表达式,例:如下表达式,运算结束后 a=?x=?表达式=?,a=15,表达式=60,a=3,x=18,表达式=18,a=3,x=3,表达式=18,逗号表达式,2.4.10 sizeof()运算符和表达式,例 int i;double x;sizeof(int)sizeof(i),sizeof(double)s

17、izeof(x),格式:sizeof(类型标识/变量名)功能:求某类型变量所占字节数,例:求&,2.4.11 逻辑表达式运算优化时的副作用,从左向右扫描,计算,当 为真时,继续计算 当 为假时,即能确定整个表达式的值为假,则停止计算,例:求|,从左向右扫描,计算,当 为假时,继续计算 当 为真时,即能确定整个表达式的值为真,则停止计算,课堂练习int x,y,z,w;输出结果?x=y=z=1;w=+x|+y,输出:2 1 1 1,2.5 类型转换2.5.1 赋值时的自动类型转换,如果赋值运算符两侧的类型不一致,则遵循以下几条原则进行类型转换后赋值。,1.整型变量实型数据,舍弃小数(无四舍五入)

18、。,int i=3.96;i 为 3,2.实型变量整型数据,数值不变,有效数位增加。,float f=23;f 为 23.0,double d=23;d 为 23.0,3整型数据之间相互赋值,整型数据类型有:signed char unsigned charsigned short unsigned shortsigned int unsigned intsigned long unsigned long,各种类型的整型数占用的字节数是不同的,其二进制位数有长有短。它们之间相互赋值,其实就是它们内存数据之间的赋值,分两种情况。,下面以 int 型数据与 char 型数据之间的赋值进行说明:,将

19、 int 型变量赋给字符型变量时(长短)方法:截取低位赋值,例:signed char c1=250;,c1真值为-6,将字符型变量赋给 int 型变量时(短长),又分成两种情况:,有符号的字符型数据整型变量 需符号位扩展,例:char c1=15;int i;i=c1;,扩展正号,结果i 的真值为 15,char c1=250;int i;i=c1;,扩展负号,结果 i 的真值为-6,无符号的字符型数据整型变量 前面补 0 unsigned char c1=250;int i;i=c1;,前面补0,结果 i 的真值为 250,2.5.2 各种类型运算量混合运算时的自动类型转换,C 语言的数值

20、型数据(常量变量)包括:,整型,int,short int,long int,unsigned int,unsigned short,unsigned long,实型,float,double,字符型,char,unsigned char,各种数据类型,它们的常量和变量之间可以混合运算。两个量运算时,在计算机内部首先将它们转换成相同数据类型的量,然后进行运算。虽然这种转换是C+内部自动完成的,但是若编程者知道了转换机理,对掌握及灵活运用C+表达式是有帮助的。转换原则如图2-3所示:,int i;float f;double d;10+a+i*f-d/i,int,double,double,do

21、uble,double,例:,2.5.3 强制类型转换,形式:类型名(表达式)或:(类型名)表达式,例:int i,a;float x,y;double z;a=(int)(x+y);或 a=int(x+y);z=(double)a;或 z=double(a);a=(int)z%i;或 a=int(z)%i;,注意:1.强制转换的对象:表达式。2.强制转换并不将变量本身类型转变。,小结:类型转换有两种:(1)自动转换(赋值时,混合运算时)(2)强制转换,课堂练习:,求下面算术表达式的值:(1)已知 x=2.5,a=7,y=4.7 求 x+a%3*(int)(x+y)%2/4 的值(2)已知 a=2,b=3,x=3.5,y=2.5 求 float(a+b)/2+int(x)%int(y)的值,2.53.5,第 2 章 结束,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号