分社教学资源汇总曾cc第二章_第1页
分社教学资源汇总曾cc第二章_第2页
分社教学资源汇总曾cc第二章_第3页
分社教学资源汇总曾cc第二章_第4页
分社教学资源汇总曾cc第二章_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、1第二章 基本数据类型、运算符和表达式2.1 数据类型2.2 变量和常量 2.3 运算符和表达式2.4 指针2.5 typedef语句2.6 应用举例22.1 数据类型程序中要对各种各样的数据进行描述和操作,用到的数据都必须指明其类型。数据类型的作用:指出了应为数据分配的存储空间的大小规定了数据所能进行的操作 数据类型基本类型 构造类型 整型 (int)实型 字符型(char)布尔型(bool)空类型(void) 单精度型(float)双精度型(double) 指针数组结构型(struct)共用体(union)枚举(enum)类(class)32.2 变量和常量1.变量的定义程序运行过程中其值

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

3、;)所谓初始化是指在定义变量的同时指定变量的初值,形式有二:例如:int k=3,m=3, n(3);()int k=m=n=3;/不允许为多个变量同时初始化数据类型 变量名=表达式;数据类型 变量名(表达式);53.变量引用C+中增加了“引用”这一概念,许多地方可以代替指针实现相应的功能,比指针更安全。所谓引用即给一个已知变量起个别名,系统不为引用另外开辟内存,而是与原变量共享同一段内存,引用好比是一个虚拟的变量,声明形式为:数据类型 &引用名=已定义的变量如:int a=3, &b=a; /定义b为a的引用b=5;/你知道此时a的值为多少吗?62.2.2 常量在程序运行过程中其值不能改变的

4、量,有值常量和符号常量两种。1.整型常量进制形式实例错例十进制以数字19开始-3,+5,12045八进制以数字0开始(由07之间数字组成)023,-010078十六进制以0 x或0X开始(由09及AF组成)0XAF,-0X510XFG72. 实型常量十进制小数形式:由正负号、数字和小数点组成, 如1.25、-1.25、17. 和 .1 指数形式:由尾数、指数符号e(或E)及指数构成,其中指数必 须是十进制整数。如1.25e-5、+1e10、-1.25e5。 注意:e前面不能没有数字,e后面的数字必须为整数,也不能加园括号。如1E(-3)、E-5、1e2.1都是错误的。83. 字符常量 C/C+

5、提供了两类字符型常量:普通字符常量:用单引号括起来的一个字符。如:A、 0、? 。转义字符常量:以“ ” (反斜杠)开头的用单引号括起来的字符 序列。如: n 、 t 、 x61等。常用的转义 字符见p26。注意: 0表示ASCII码为0的字符,它是一个空字符,注意其与0的区别,后者表示的是ASCII码为48的数字字符。字符型数据在内存中以ASCII码存储,故整型数据和字符型数据在一定范围内可以通用。如: x= a +2; printf( %d , a);94. 字符串常量 字符串常量是用双引号括起来的字符序列, 系统在字符串常量最后自动加字符串结束符号 0 。例如: 字符串“A”的存储形式:

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

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

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

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

10、)、!(逻辑非)优先级: (从高到低)! & | 其中,“!” 是单目运算符,优先级高于算术运算符。“” 和 “|” 低于关系运算符。 逻辑运算通常用来连接关系运算,逻辑运算符两端的操作数如为“非”,就当作“真”来处理,如果是“”,便当作“假”来处理。逻辑运算的结果也只有 0(false)和1(true)两种。16说明:当多个&连续出现时,如表达式& 表达式 & 表达式从左到右,只要一个操作数为0,结果就为0,不进行后续运算。当多个 | 连续出现时,如表达式 | 表达式 | 表达式从左到右,只要一个操作数为1,结果就为1,不进行后续运算。17#include iostream.hvoid ma

11、in()int m,n=10; m=2&n+; coutm= m ,n= y?x:y); /将和中较大的一个数赋值给变量max条件运算符的结合性是由右向左思考题: 对n(0)个人进行分班,每班k(0)个人,最后不足k人也编一班,问要编几个班?(试用条件运算符表达)n%k0?n/k+1:n/k5.赋值运算格式:作用: 将一个数据赋给一个变量,并以变量的值作为整个式子的值。变量 赋值运算符 表达式19其中赋值运算符可以是 “=”,也可以是复合赋值运算符,如“+=”、“-=”、“*=”、“/=”和“%=”等等。复合赋值运算符的等价形式: (以 “+=”为例) 例如: b /= a+2 等价于: b

12、= b/(a+2)结合性自右向左若两端类型不同,则系统自动将右端类型转换为左端类型。 例如:有定义 int a = 3.78; 则a中存放的值为3左端只能是变量(或数组元素),不能为表达式或常量,如:a+2*=b () a=b+2=c+5 ()变量+=表达式变量 = 变量表达式是一个整体206.逗号运算形式: e1,e2,e3, 其中e1、e2、e3均为表达式,从左向右依次计算各个表达式的值,而将最后一个表达式的值作为整个表达式的值,逗号运算符常用于循环语句的表达式中,将多个表达式连接成一个表达式,如:for(i=0,j=n;ij;i+,j-)逗号运算符的优先级别最低。217 .数据类型的转换

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

14、内部函数供用户编程序时直接调用,只需把包含内部函数的头文件,通过#include 预处理命令装入到程序中。例如,程序中要使用平方根函数sqrt,应该在程序加入:#include math.h“232.4 指针1. 基本概念 每个变量在内存中存放都对应一段地址,第一个字节的地址就是变量的地址,将存放地址的变量称为指针变量。 &求地址 变量的地址在编程阶段是不知道的 在程序中可以使用&运算符求得变量的地址。 int x; &x就是变量的地址24取内容*(地址) 表示根据地址取内容如图中所示, *(&x) 的值为4指针指针是一种变量,存放另一个变量的地址。 int x=4 ; int *p ; p=

15、&x ; p就是一个指针,存放x的地址。p指向x, *p的值为4,*p就是x。出现x的地方可以用*p代替,出现 *p的地方可以用x代替。10014px252.定义及初始化 定义 例如:int *p;float *q; 指针所指对象的类型。初始化在定义的同时赋初值,称为指针变量的初始化。例如:float d =1.5, *p= &d;可改写为:float d =1.5, *p;p = &d;/注意不能写做*p=&d数据类型 *标识符;不是指针名的一部分&d1.5pd26 假定有定义:int *p, a; p=NULL;指针的值为NULL(0) 表示不指向任何对象。 p=&a; p指向变量a。 p

16、1=&a; p2=p1;相同类型的指针变量可以相互赋值 例,假设有定义: int a,*p; float f;则以下形式不允许:() p=&f; () p=100; 3.运算赋值运算27算术运算p+n (或p-n):p+n:指向后面的第个元素。p-n:指向前面的第个元素。p+n的值为:p的值n*sizeof(p指向的类型)如,有定义:int a,*p=&a;假设a的地址为1000,则:p的值为1000p+3的值为:1000+3*sizeof(int)=1000+3*4=101228自增(+)和自减(-)p+、 +p、 p-、 -p自增或自减后p指向前一个或后一个元素 指针相减两个类型相同的指针

17、可以相减,结果为这两个地址差之间能够存放的数据个数(数据类型为指针所指的类型)。如,有定义:int *p1, *p2; 假设p1指向1000,p2指向1008, 则p2p1的值为:(1008-1000)/sizeof(int)=2*p+ *(p+) *p p + (*p)+ *p(*p)+294. new和deletenew运算符形式:指针=new 数据类型;指针=new 数据类型(初值);或30delete运算符用于释放用new申请的动态存储空间,形式为: delete 指针;delete 指针; 或无需指明数组长度只能释放由new申请的动态变量例:int a=3,*p=&a,*q;q=ne

18、w int(6);delete p; () delete q; 312.5 typedef语句形式:typedef 数据类型 新的数据类型名;该语句作用是为已有的数据类型定义新的名称,使其更符合Windows系统中的相关对象的含义,可以像标准C+中的数据类型一样使用这些新定义的类型。如:typedef char CHAR;CHAR c1; /等价于char c1;322.6 应用举例例2-3 用代码表达下列命题:1. 能且只能被和中的一个数整除。解:或 2. ch是大写字母。解: 思考上述命题可否描述为Ach=A&ch =Z33#includeiostream.h#includeiomanip.h#includemath.hvoid main()float a,b,c;double l,s;coutca;b=sqrt(c*c-a*a);/sqrt为内部函数,对其的说明包含在头文件math

温馨提示

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

评论

0/150

提交评论