下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,第二章 基本数据类型、运算符和表达式,2.1 数据类型 2.2 变量和常量 2.3 运算符和表达式 2.4 指针 2.5 typedef语句 2.6 应用举例,2,2.1 数据类型,程序中要对各种各样的数据进行描述和操作,用到的数据都必须指明其类型。数据类型的作用: 指出了应为数据分配的存储空间的大小 规定了数据所能进行的操作,p23,3,2.2 变量和常量,1.变量的定义 程序运行过程中其值可变的量, 定义方式如下: C/C+规定: 程序中所有变量必须先定义后使用,可及时发现录入错误(如,定义的变量为data,而程序体中使用变量为date),同时还可限制非法运算(如:a%b , 若a,b
2、为float类型则出错)。,C+中变量可随时使用,随时定义。,例如: int a, b; (定义变量a和b为整型) float x,y ; (定义变量x和y为单精度实型),数据类型 变量名表 ;,2.2.1 变量,4,2.变量的初始化 变量必须先有确定的值后才能参与各种相应的操作,变量获取值的途径有三: 通过输入语句输入 (如:cina;) 通过赋值语句赋值 (如:a=3;) 通过初始化方式赋初值 (如:int k=3;) 所谓初始化是指在定义变量的同时指定变量的初值,形式有二: 例如: int k=3,m=3, n(3); ()int k=m=n=3;/不允许为多个变量同时初始化,数据类型
3、变量名=表达式; 数据类型 变量名(表达式);,5,3.变量引用,C+中增加了“引用”这一概念,许多地方可以代替指针实现相应的功能,比指针更安全。 所谓引用即给一个已知变量起个别名,系统不为引用另外开辟内存,而是与原变量共享同一段内存,引用好比是一个虚拟的变量,声明形式为:,数据类型 cout a;,9,4. 字符串常量 字符串常量是用双引号括起来的字符序列, 系统在字符串常量最后自动加字符串结束符号 0 。 例如: 字符串“A”的存储形式: 字符A的存储形式: 5. 符号常量 是以标识符形式出现的常量,作用是便于程序阅读和修改。C+中用define命令或关键字const定义符号常量,形式如下
4、:,A 0,A,内存中实际存放的是这些字符的ASCII码,#define 标识符 常量值 const 数据类型 标识符 = 常量值;,或:,10,注意:,习惯上符号常量名大写,而变量名小写,以示区分。 符号常量虽然用标识符来标识,但本质上是常量,具有常量值不能改变的性质。,#define 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= sendl; ,例2-1,1.演示不同精度圆周率的程序运行结果 2.观察编译中的“警告”对程序运行的影响 3.消除“warning”
5、的方法,11,2.3 运算符和表达式,2.3.1 基本概念,运算符具有三个属性: 优先级:指运算的先后次序,共分15个级别。(见p27表1.2.4) 结合性:指相同优先级运算符连续出现时的计算顺序,分自左 向右和自右向左两种,除特别声明外,皆指自左向右。 目 数: 指运算符要求的操作数的个数,包括单目、双目和三目,一般目数越少,优先级越高。,表达式:由常量、变量、函数调用和运算符按一定规律组合在一 起构成的式子。 如: a+14/(3+2)-sqrt(17),12,2.3.2 运算符 1.算术运算,种类: +(加法或取正) -(减法或取负) *(乘法) /(除法) %(求余数) +(自增) -
6、(自减) 其中: +和-的结合性则是自右向左 优先级:(从高到低) (+、-、+、-) (*、/、%) (+、-),正、负,加、减,13,说明: 在除法运算中,当两个操作数都是整数时,商也为整数,小数部分一律舍去。如: 1/2 0 1.0 /2 0.5 %(求余运算)要求两个操作数都是整型,结果为整除后余下的整余数。 自增、自减运算符(+、- -) +i , -i (在使用 i之前,先使i的值加减1) i+ , i- (在使用 i之后, 使i的值加减1),若 i 的值为3,则: j=+i; j的值为4, i的值为4 j=i+; j的值为3, i的值为4,注意: 自增、自减运算符只能用于变量,而
7、不能用于常量和表达式。 () 5+、(a+b)+,14,华氏温度转换为摄氏温度:c=5/9(F-32),#include iostream.h void main( ) float c,f; cinf; c=5/9 (f-32); cout摄氏: cendl; ,15,2 .关系运算,种类: (大于) = =(等于)、 =(大于等于)、 !=(不等于) 优先级: (从高到低) ( 、 = ) ( = = 、 != ) 关系运算描述的是一种“判断关系”,其结果有“真(true)”和“假(false)”两种。用“1”代表“真”,用 “0” 代表“假” 例如:53的结果为1, aB的结果为0 思考:
8、 x为0到100之间的数能否表示为 0=x=100?,16,对n(0)个人进行分班,每班k(0)个人,最后不足k人也编一班,问要编几个班?,n/k+(n%k0),17,3.逻辑运算,种类: 表达式a+ m=2 ,例2-2,4. 条件运算 形式: e1?e2:e3 一般而言,e1为条件表达式,当其成立时,将e2的值作为整个表达式的值,不再计算e3的值;否则取e3的值作为整个表达式的结果,而不计算e2的值。,20,如: max(xy?x:y); /将和中较大的一个数赋值给变量max 条件运算符的结合性是由右向左 思考题: 对n(0)个人进行分班,每班k(0)个人,最后不足k人也编一班,问要编几个班
9、?(试用条件运算符表达),5.赋值运算 格式: 作用: 将一个数据赋给一个变量,并以变量的值作为整个式子的值。,变量 赋值运算符 表达式,n%k!=0?n/k+1:n/k,21,其中赋值运算符可以是 “=”,也可以是复合赋值运算符,如“+=”、“-=”、“*=”、“/=”和“%=”等等。 复合赋值运算符的等价形式: (以 “+=”为例) 例如: b /= a+2 等价于: b = b/(a+2) 结合性自右向左 若两端类型不同,则系统自动将右端类型转换为左端类型。 例如:有定义 int a = 3.78; 则a中存放的值为3 左端只能是变量(或数组元素),不能为表达式或常量,如:a+2*=b
10、() a=b+2=c+5 (),变量+=表达式,变量 = 变量表达式,是一个整体,22,6. 逗号运算 形式: e1,e2,e3, 各表达式的运算次序:从左向右,而将最后一个表达式的值作为整个表达式的值。 for(i=0,j=n;ij;i+,j-) 逗号运算符的优先级别最低。,例如: a=3*5,a*4 整个逗号表达式的值为60 (a=3*5,a*4),a+5 整个逗号表达式的值为20,23,7 .数据类型的转换 数据类型的转换分为显式(强制)转换和隐式(自动)转换。 强制转换格式: 或: 将一种数据类型的值强制转换为另外一种数据类型。常用于对函数的参数及返回值的操作。 假设、为float型数
11、据,则(int)(x+y)强行将+的值转换成整型,x和y仍为float型。 自动转换: 在不同类型数据进行混合运算时,系统自动进行的类型转换。,(类型名)表达式,类型名(表达式),24,char short int unsigned longunsigned longfloatdoublelong double,必定的转换,混合运算时由低向高转换,自动转换还包括赋值运算时赋值号右端类型向左端类型的转换,8.内部函数 C/C+中提供了多种内部函数供用户编程序时直接调用,只需把包含内部函数的头文件,通过#include 预处理命令装入到程序中。例如,程序中要使用平方根函数sqrt,应该在程序加入:
12、 #include math.h“,25,2.4 指针,1. 基本概念 每个变量在内存中存放都对应一段地址,第一个字节的地址就是变量的地址,将存放地址的变量称为指针变量。, 指针所指对象的类型。 初始化 在定义的同时赋初值,称为指针变量的初始化。 例如: float d =1.5, *p= /注意不能写做*p= p=NULL; 指针的值为NULL(0) 表示不指向任何对象。 p=,3.运算 赋值运算,29,算术运算 p+n (或p-n): p+n:指向后面的第个元素。 p-n:指向前面的第个元素。 p+n的值为:p的值n*sizeof(p指向的类型),如,有定义: int a,*p= 假设a的
13、地址为1000,则: p的值为1000 p+3的值为: 1000+3*sizeof(int)=1000+3*4=1012,30,自增(+)和自减(-) p+、 +p、 p-、 -p 自增或自减后p指向前一个或后一个元素 指针相减 两个类型相同的指针可以相减,结果为这两个地址差之间能够存放的数据个数(数据类型为指针所指的类型)。 如,有定义: int *p1, *p2; 假设p1指向1000,p2指向1008, 则p2p1的值为: (1008-1000)/sizeof(int)=2,*p+ *(p+) *p p + (*p)+ *p (*p)+,31,4. new和delete new运算符 形
14、式:,指针=new 数据类型; 指针=new 数据类型(初值);,或,32,delete运算符 用于释放用new申请的动态存储空间,形式为:,delete 指针; delete 指针;,或,无需指明数组长度,只能释放由new申请的动态变量,例:,int a=3,*p=,33,2.5 typedef语句,形式:,typedef 数据类型 新的数据类型名;,该语句作用是为已有的数据类型定义新的名称,使其更符合Windows系统中的相关对象的含义,可以像标准C+中的数据类型一样使用这些新定义的类型。如: typedef char CHAR; CHAR c1; /等价于char c1;,34,2.6
15、应用举例 例2-3 用代码表达下列命题: 1. 能且只能被和中的一个数整除。 解: 或 2. ch是大写字母。 解: 思考上述命题可否描述为AchZ?为什么?,(m%3= =0) double l,s; coutca; b=sqrt(c*c-a*a);/sqrt为内部函数,对其的说明包含在头文件math.h中 l=a+b+c; s=a*b/2; coutsetiosflags(ios:fixed); coutsetprecision(2); cout计算结果:endl; coutsetw(8)另一直角边=bendl setw(11)周长=lendl setw(11)面积=sendl; ,例2-4 编写程序:要求输入直角三角形的斜边和一条直角边,求三角形另外一条直角边,周长和面积,输入 (已知),处理 (根据已知求未知),输出 (结果),编程过程,程序:,37,#includeiostream.h #includemath.h #includeiomanip.h void main() int c1,c2,c3; char c4; int x;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 陀螺健康活动方案策划(3篇)
- 餐厅临时活动方案策划(3篇)
- 26年老年走失应急处理流程课件
- 腮腺炎的预防接种与护理
- 肝胆外科护理服务模式
- 中专就业指导中心
- 分包商安全管理培训课件
- 含氟烷烃生产工创新应用模拟考核试卷含答案
- 膜法水处理材料和设备制造工安全宣传评优考核试卷含答案
- 工业气体生产工安全演练竞赛考核试卷含答案
- 现代西班牙语A1课后翻译
- 第十章 专题 电场性质的应用:三线轨迹问题+等分法求电势 集体备课说课稿 -2023-2024学年高一下学期物理人教版(2019)必修第三册
- 质量经理述职报告
- 2024年保密知识学习竞赛考试题库500题(含答案)
- 糖尿病足敷料选择
- 9生活离不开他们(第一课时) 教学设计-四年级下册道德与法治
- 大国三农-辉煌成就版智慧树知到期末考试答案章节答案2024年中国农业大学
- 第19章 40年代戏剧、散文
- 年降雨频率表
- TZSA 198-2023 复合材料板簧技术规范
- 电致变色玻璃项目融资计划书
评论
0/150
提交评论