C++课件 第二章基本数据类型、运算符和表达式.ppt

上传人:苏美尔 文档编号:8914230 上传时间:2021-01-24 格式:PPT 页数:40 大小:136KB
返回 下载 相关 举报
C++课件 第二章基本数据类型、运算符和表达式.ppt_第1页
第1页 / 共40页
C++课件 第二章基本数据类型、运算符和表达式.ppt_第2页
第2页 / 共40页
C++课件 第二章基本数据类型、运算符和表达式.ppt_第3页
第3页 / 共40页
C++课件 第二章基本数据类型、运算符和表达式.ppt_第4页
第4页 / 共40页
C++课件 第二章基本数据类型、运算符和表达式.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《C++课件 第二章基本数据类型、运算符和表达式.ppt》由会员分享,可在线阅读,更多相关《C++课件 第二章基本数据类型、运算符和表达式.ppt(40页珍藏版)》请在三一文库上搜索。

1、1,第二章 基本数据类型、运算符和表达式,2.1 数据类型 2.2 变量和常量 2.3 运算符和表达式 2.4 指针 2.5 typedef语句 2.6,2,本章教学要求,要求了解的内容有:2.1数据类型;2.5 typedef语句。 要求理解的内容有:2.3中的数据类型转换;2.4中的new和delete运算符 要求掌握的内容有:2.2 变量和常量;2.3 运算符和表达式;2.4 指针:掌握指针的概念、指针运算;2.6 应用举例:学会使用表达式描述有关命题。 难点:变量引用,运算符+、- -,指针的概念,new和delete。 重点:变量的定义和使用,表达式的书写和计算规则。,3,2.1 数

2、据类型,程序中要对各种各样的数据进行描述和操作,用到的数据都必须指明其类型。数据类型的作用: 指出了应为数据分配的存储空间的大小 规定了数据所能进行的操作,数据类型,基本类型,构造类型,整型 (int),实型,字符型(char) 布尔型(bool) 空类型(void),单精度型(float) 双精度型(double),指针 数组 结构型(struct) 共用体(union) 枚举(enum) 类(class),4,2.2 变量和常量,1.变量的定义 程序运行过程中其值可变的量, 定义方式如下: C/C+规定: 程序中所有变量必须先定义后使用,可及时发现录入错误(如,定义的变量为data,而程序

3、体中使用变量为date),同时还可限制非法运算(如:a%b , 若a,b为float类型则出错)。,C+中变量可随时使用,随时定义。,例如: int a, b; (定义变量a和b为整型) float x,y ; (定义变量x和y为单精度实型),数据类型 变量名表 ;,2.2.1 变量,5,2.变量的初始化 变量必须先有确定的值后才能参与各种相应的操作,变量获取值的途径有三: 通过输入语句输入 (如:cina;) 通过赋值语句赋值 (如:a=3;) 通过初始化方式赋初值 (如:int k=3;) 所谓初始化是指在定义变量的同时指定变量的初值,形式有二: 例如: int k=3,m=3, n(3)

4、; ()int k=m=n=3;/不允许为多个变量同时初始化,数据类型 变量名=表达式; 数据类型 变量名(表达式);,6,3.变量引用,C+中增加了“引用”这一概念,许多地方可以代替指针实现相应的功能,比指针更安全。 所谓引用即给一个已知变量起个别名,系统不为引用另外开辟内存,而是与原变量共享同一段内存,引用好比是一个虚拟的变量,声明形式为:,数据类型 printf( %d , a);,10,4. 字符串常量 字符串常量是用双引号括起来的字符序列, 系统在字符串常量最后自动加字符串结束符号 0 。 例如: 字符串“A”的存储形式: 字符A的存储形式: 5. 符号常量 是以标识符形式出现的常量

5、,作用是便于程序阅读和修改。C+中用define命令或关键字const定义符号常量,形式如下:,A 0,A,内存中实际存放的是这些字符的ASCII码,#define 标识符 常量值 const 数据类型 标识符 = 常量值,或:,11,注意:,习惯上符号常量名大写,而变量名小写,以示区分。 符号常量虽然用标识符来标识,但本质上是常量,具有常量值不能改变的性质。,#define PI 3.14 /const double PI=3.14 #include iostream.h void main( ) float r=3.0,s,l; l=2*PI*r; s=PI*r*r; coutl=l,s=

6、 sendl; ,例:,1.演示不同精度圆周率的程序运行结果 2.观察编译中的“警告”对程序运行的影响 3.消除“warning”的方法,12,2.3 运算符和表达式,基本概念,运算符具有三个属性: 优先级:指运算的先后次序,共分15个级别。(见p29表1.2.4) 结合性:指相同优先级运算符连续出现时的计算顺序,分自左 向右和自右向左两种,除特别声明外,皆指自左向右。 目 数: 指运算符要求的操作数的个数,包括单目、双目和三目,一般目数越少,优先级越高。,表达式:由常量、变量、函数调用和运算符按一定规律组合在一 起构成的式子。 如: a+14/(3+2)-sqrt(17),13,2.3.1

7、运算符 1.算术运算,种类: +(加法或取正) -(减法或取负) *(乘法) /(除法) %(求余数) +(自增) -(自减) 其中: +和-的结合性则是自右向左 优先级:(从高到低) (+、-、+、-) (*、/、%) (+、-),正、负,加、减,14,说明: 在除法运算中,当两个操作数都是整数时,商也为整数,小数部分一律舍去。如: 1/2 0 1.0 /2 0.5 %(求余运算)要求两个操作数都是整型,结果为整除后余下的整余数。 自增、自减运算符(+、- -) +i , -i (在使用 i之前,先使i的值加减1) i+ , i- (在使用 i之后, 使i的值加减1),若 i 的值为3,则:

8、 j=+i; j的值为4, i的值为4 j=i+; j的值为3, i的值为4,注意: 自增、自减运算符只能用于变量,而不能用于常量和表达式。 () 5+、(a+b)+,15,2 .关系运算,种类: (大于) = =(等于)、 =(大于等于)、 !=(不等于) 优先级: (从高到低) ( 、 = ) ( = = 、 != ) 关系运算描述的是一种“判断关系”,其结果有“真(true)”和“假(false)”两种。用“1”代表“真”,用 “0” 代表“假” 例如:53的结果为1, aB的结果为0,思考: x为0到100之间的数能否表示为 0=x=100?,16,3.逻辑运算,种类: m=2 ,例:

9、,1.分析运行结果 2. 改为m=0 则a中存放的值为3 左端只能是变量(或数组元素),不能为表达式或常量,如:a+2*=b () a=b+2=c+5 (),变量+=表达式,变量 = 变量表达式,是一个整体,21,6.逗号运算 形式: e1,e2,e3, 其中e1、e2、e3均为表达式,从左向右依次计算各个表达式的值,而将最后一个表达式的值作为整个表达式的值,逗号运算符常用于循环语句的表达式中,将多个表达式连接成一个表达式,如: for(i=0,j=n;ij;i+,j-) 逗号运算符的优先级别最低。,22,7 .数据类型的转换 数据类型的转换分为显式(强制)转换和隐式(自动)转换。 强制转换格

10、式: 或: 将一种数据类型的值强制转换为另外一种数据类型。常用于对函数的参数及返回值的操作。 假设、为float型数据,则(int)(x+y)强行将+的值转换成整型,x和y仍为float型。,(类型名)表达式,类型名(表达式),自动转换: 在不同类型数据进行混合运算时,系统自动进行的类型转换。,23,char short int unsigned longunsigned longfloatdoublelong double,必定的转换,混合运算时由低向高转换,自动转换还包括赋值运算时赋值号右端类型向左端类型的转换,8.内部函数 C/C+中提供了多种内部函数供用户编程序时直接调用,只需把包含内

11、部函数的头文件,通过#include 预处理命令装入到程序中。例如,程序中要使用平方根函数sqrt,应该在程序加入: #include math.h“,24,2.4 指针,1. 变量的地址 每个变量在内存中都占用一定的连续存储空间。所占内存空间的第一个字节的地址就是该变量的地址,将存放地址的变量称为指针变量。,2.求地址运算符 指针所指对象的类型。 初始化 在定义的同时赋初值,称为指针变量的初始化。 例如: float d =1.5, *p= /注意不能写做*p= p=NULL; 指针的值为NULL(0) 表示不指向任何对象。 p= (),2.4.2 指针运算 1. 赋值运算,28,2. 算术

12、运算 p+n (或p-n): p+n:指向后面的第个元素。 p-n:指向前面的第个元素。 p+n的值为:p的值n*sizeof(p指向的类型),如,有定义: int a,*p= 假设a的地址为1000,则: p的值为1000 p+3的值为: 1000+3*sizeof(int)=1000+3*4=1012,29,自增(+)和自减(-) p+、 +p、 p-、 -p 自增或自减后p指向前一个或后一个元素,*p+ *(p+) *p p + (*p)+ *p (*p)+,注: 1.对指针进行自增(+)和自减(-),本质是将指针指向同一类型的后一个(或前一个)的变量。并不是指针的值加1或减1. 与普通

13、变量有本质的区别。,30,讨论:,若有如下定义: int a=5,b1,b2,b3,b4; int *p= / b4=? a=? p=? *p=?,31,32,指针相减 两个类型相同的指针可以相减,结果为这两个地址差之间能够存放的数据个数(数据类型为指针所指的类型)。 如,有定义: int *p1, *p2; 假设p1指向1000,p2指向1008, 则 p2-p1的值为: (1008-1000)/sizeof(int)=2,33,4. new和delete new运算符 形式:,指针=new 数据类型; 指针=new 数据类型(初值);,或,34,#include void main( )

14、int *p=new int10; int *q=p+5; coutq=qendl; q+; cout(q+)=qendl; cout(q-p)=q-pendl; delete(p); ,例:2.3 指针运算示例,35,delete运算符 用于释放用new申请的动态存储空间,形式为:,delete 指针; delete 指针;,或,无需指明数组长度,只能释放由new申请的动态变量,例:,int a=3,*p=,36,2.5 typedef语句,形式:,typedef 数据类型 新的数据类型名;,该语句作用是为已有的数据类型定义新的名称,使其更符合Windows系统中的相关对象的含义,可以像标准

15、C+中的数据类型一样使用这些新定义的类型。如: typedef char CHAR; CHAR c1; /等价于char c1;,37,2.6 应用举例 例2.4: 用代码表达下列命题: 1. 能且只能被和中的一个数整除。 解: 或 2. ch是大写字母。 解:,(m%3= =0) double l,s; coutca; b=sqrt(c*c-a*a);/sqrt为内部函数,对其的说明包含在头文件math.h中 l=a+b+c; s=a*b/2; cout计算结果:endl; coutsetw(8)另一直角边=bendl setw(11)周长=lendl setw(11)面积=sendl; ,

16、例2-5 编写程序:要求输入直角三角形的斜边和一条直角边,求三角形另外一条直角边,周长和面积,程序:,输入 (已知),处理 (根据已知求未知),输出 (结果),编程过程,39,#include void main( ) float x,y,z,max; coutxyz; max=xy?x:y; max=maxz?max:z; cout最大的数据=maxendl; ,例2-6 编写程序求任意三个数中的最大数,40,#includeiostream.h #includemath.h #includeiomanip.h void main() int c1,c2,c3; char c4; int x; cinx; c4=x=0?+:-;/x的符号存入c4 x=abs(x);/求整型数x的绝对值 c3=x%10;/x%10为个位数字 x=x/10; c2=x%10; c1=x/10; cout数符 百位数 十位数 个位数endl; coutsetw(2)c4setw(8)c1 setw(8)c2setw(8)c3endl; ,例2-7 编程输入一个三位整数,依次输出该数的正(负)号和百位、十位、个位数字。,程序,分离出符号位后分解各数位,

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

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1