基本数据类型运算符和表达式.ppt

上传人:小飞机 文档编号:6559973 上传时间:2023-11-12 格式:PPT 页数:45 大小:333.50KB
返回 下载 相关 举报
基本数据类型运算符和表达式.ppt_第1页
第1页 / 共45页
基本数据类型运算符和表达式.ppt_第2页
第2页 / 共45页
基本数据类型运算符和表达式.ppt_第3页
第3页 / 共45页
基本数据类型运算符和表达式.ppt_第4页
第4页 / 共45页
基本数据类型运算符和表达式.ppt_第5页
第5页 / 共45页
点击查看更多>>
资源描述

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

1、C+程序设计,The C Programming Language,AnHui University of Science and TechnologyDepartment of Computer Science&Technology,安徽理工大学计算机科学与工程学院,2023/11/12,安徽理工大学计算机软件教研室,2,第二章 基本数据类型、运算符和表达式,2.1 数据类型2.2 变量和常量 2.3 运算符和表达式2.4 指针2.5 typedef语句2.6 应用举例,2023/11/12,安徽理工大学计算机软件教研室,3,程序中要对各种各样的数据进行描述和操作,用到的数据都必须指明其类型

2、。数据类型的作用:指出了应为数据分配的存储空间的大小规定了数据所能进行的操作,2.1 数据类型,2023/11/12,安徽理工大学计算机软件教研室,4,程序运行过程中其值可变的量,定义方式如下:数据类型 变量名表;C/C+规定:程序中所有变量必须先定义后使用,可及时发现录入错误(如,定义的变量为data,而程序体中使用变量为date),同时还可限制非法运算(如:a%b,若a,b为float类型则出错)。,C+中变量可随时使用,随时定义。,例如:int a,b;(定义变量a和b为整型)float x,y;(定义变量x和y为单精度实型),2.2.1 变量,2.2 变量和常量,1.变量的定义,202

3、3/11/12,安徽理工大学计算机软件教研室,5,变量必须先有确定的值后才能参与各种相应的操作,变量获取值的途径有三:通过输入语句输入(如:cina;)通过赋值语句赋值(如:a=3;)通过初始化方式赋初值(如:int k=3;)所谓初始化是指在定义变量的同时指定变量的初值,形式有二:例如:int k=3,m=3,n(3);()int k=m=n=3;/不允许为多个变量同时初始化,数据类型 变量名=表达式;数据类型 变量名(表达式);,2.变量的初始化,2023/11/12,安徽理工大学计算机软件教研室,6,C+中增加了“引用”这一概念,许多地方可以代替指针实现相应的功能,比指针更安全。所谓引用

4、即给一个已知变量起个别名,系统不为引用另外开辟内存,而是与原变量共享同一段内存,引用好比是一个虚拟的变量,声明形式为:,数据类型&引用名=已定义的变量,如:int a=3,/你知道此时a的值为多少吗?,3.变量引用,只能对变量引用,不能对常量与表达式引用!,2023/11/12,安徽理工大学计算机软件教研室,7,2.2.2 常量,在程序运行过程中其值不能改变的量,有值常量和符号常量两种。,1.整型常量,2023/11/12,安徽理工大学计算机软件教研室,8,十进制小数形式:由正负号、数字和小数点组成,如1.25、-1.25、17.和.1 指数形式:由尾数、指数符号e(或E)及指数构成,其中指数

5、必须是十进制整数。如1.25e-5、+1e10、-1.25e5。注意:e前面不能没有数字,e后面的数字必须为整数,也不能加圆括号。如1E(-3)、E-5、1e2.1都是错误的。,2.实型常量,2023/11/12,安徽理工大学计算机软件教研室,9,C/C+提供了两类字符型常量:普通字符常量:用单引号括起来的一个字符。如:A、0、?、。转义字符常量:以“”(反斜杠)开头的用单引号括起来的字符序列。如:n、t、x61 等。常用的转义字符见p27。注意:0表示ASCII码为0的字符,它是一个空字符,注意其与0的区别,后者表示的是ASCII码为48的数字字符。字符型数据在内存中以ASCII码存储,故整

6、型数据和字符型数据在一定范围内可以通用。如:,2.字符常量,x=a+2;,2023/11/12,安徽理工大学计算机软件教研室,10,字符串常量是用双引号括起来的字符序列,系统在字符串常量最后自动加字符串结束符号 0。例如:字符串“A”的存储形式:字符A的存储形式:,4.字符串常量,2023/11/12,安徽理工大学计算机软件教研室,11,是以标识符形式出现的常量,作用是便于程序阅读和修改。C+中用define命令或关键字const定义符号常量,形式如下:,#define 标识符 常量值或:const 数据类型 标识符=常量值,5.符号常量,习惯上符号常量名大写,而变量名小写,以示区分。符号常量

7、虽然用标识符来标识,但本质上是常量,具有常量值不能改变的性质。,注意:,2023/11/12,安徽理工大学计算机软件教研室,12,#define PI 3.14#include iostream.hvoid main()float r=3.0,s,l;l=2*PI*r;s=PI*r*r;coutl=l,s=sendl;,例,1.演示不同精度圆周率的程序运行结果2.观察编译中的“警告”对程序运行的影响3.消除“warning”的方法,2023/11/12,安徽理工大学计算机软件教研室,13,运算符具有三个属性:优先级:指运算的先后次序,共分15个级别。(见p28表1.2.4)结合性:指相同优先级

8、运算符连续出现时的计算顺序,分自左 向右和自右向左两种,除特别声明外,皆指自左向右。目 数:指运算符要求的操作数的个数,包括单目、双目和三目,一般目数越少,优先级越高。,表达式:由常量、变量、函数调用和运算符按一定规律组合在一起构成的式子。如:a+14/(3+2)-sqrt(17),2.3 运算符和表达式,2.3.1 基本概念,2023/11/12,安徽理工大学计算机软件教研室,14,种类:+(加法或取正)-(减法或取负)*(乘法)/(除法)%(求余数)+(自增)-(自减),正、负,加、减,2.3.2 运算符,1.算术运算,其中:+和-的结合性则是自右向左 优先级:(从高到低)(+、-、+、-

9、)(*、/、%)(+、-),2023/11/12,安徽理工大学计算机软件教研室,15,说明:在除法运算中,当两个操作数都是整数时,商也为整数,小数部分一律舍去。如:1/2 0 1.0/2 0.5%(求余运算)要求两个操作数都是整型,结果为整除后余下的整余数。,常见用法:1.判断是否能整除,如判断奇偶性。2.利用整除与取余来求一个整数各位上的值,2023/11/12,安徽理工大学计算机软件教研室,16,自增、自减运算符(+、-)+i,-i(在使用 i之前,先使i的值加减1)i+,i-(在使用 i之后,使i的值加减1),若 i 的值为3,则:j=+i;j的值为4,i的值为4 j=i+;j的值为3,

10、i的值为4,注意:自增、自减运算符只能用于变量,而不能用于常量和表达式。()5+、(a+b)+,2023/11/12,安徽理工大学计算机软件教研室,17,种类:(大于)=(等于)、=(大于等于)、!=(不等于)优先级:(从高到低)(、=)(=、!=)关系运算描述的是一种“判断关系”,其结果有“真(true)”和“假(false)”两种。用“1”代表“真”,用“0”代表“假”例如:53的结果为1,aB的结果为0思考:x为0到100之间的数能否表示为 0=x=100?注:字符串不能用关系比较符比较!,2.关系运算,2023/11/12,安徽理工大学计算机软件教研室,18,种类:!(逻辑非)、&(逻

11、辑与)、|(逻辑或)优先级:(从高到低)!&|其中,“!”是单目运算符,优先级高于双目的算术运算符。“”和“|”低于关系运算符。逻辑运算通常用来连接关系运算,逻辑运算符两端的操作数如为“非”,就当作“真”来处理,如果是“”,便当作“假”来处理。逻辑运算的结果也只有 0(false)和1(true)两种。,3.逻辑运算,2023/11/12,安徽理工大学计算机软件教研室,19,说明:当多个&连续出现时,如表达式&表达式&表达式从左到右,只要一个操作数为0,结果就为0,不进行后续运算。当多个|连续出现时,如表达式|表达式|表达式从左到右,只要一个操作数为1,结果就为1,不进行后续运算。,2023/

12、11/12,安徽理工大学计算机软件教研室,20,#include iostream.hvoid main()int m,n=10;m=2,例2-2,1.分析运行结果2.改为m=0&n+,结果又如何。,2023/11/12,安徽理工大学计算机软件教研室,21,形式:e1?e2:e3 一般而言,e1为条件表达式,当其成立时,将e2的值作为整个表达式的值,不再计算e3的值;否则取e3的值作为整个表达式的结果,而不计算e2的值。,4.条件运算,如:max(xy?x:y);/将和中较大的一个数赋值给变量max条件运算符的结合性是由右向左思考题:对n(0)个人进行分班,每班k(0)个人,最后不足k人也编一

13、班,问要编几个班?(试用条件运算符表达),n%k0?n/k+1:n/k,2023/11/12,安徽理工大学计算机软件教研室,22,格式:作用:将一个数据赋给一个变量,并以变量的值作为整个式子的值。,变量 赋值运算符 表达式,5.赋值运算,2023/11/12,安徽理工大学计算机软件教研室,23,其中赋值运算符可以是“=”,也可以是复合赋值运算符,如“+=”、“-=”、“*=”、“/=”和“%=”等等。复合赋值运算符的等价形式:(以“+=”为例)例如:b/=a+2 等价于:b=b/(a+2)结合性自右向左若两端类型不同,则系统自动将右端类型转换为左端类型。例如:有定义 int a=3.78;则a

14、中存放的值为3左端只能是变量(或数组元素),不能为表达式或常量,如:a+2*=b()a=b+2=c+5(),2023/11/12,安徽理工大学计算机软件教研室,24,形式:e1,e2,e3,其中e1、e2、e3均为表达式,从左向右依次计算各个表达式的值,而将最后一个表达式的值作为整个表达式的值,逗号运算符常用于循环语句的表达式中,将多个表达式连接成一个表达式,如:for(i=0,j=n;ij;i+,j-)逗号运算符的优先级别最低。例:若有语句m=2,3,5+1;则m的值为?,6.逗号运算,2023/11/12,安徽理工大学计算机软件教研室,25,7.数据类型的转换数据类型的转换分为显式(强制)

15、转换和隐式(自动)转换。强制转换格式:或:将一种数据类型的值强制转换为另外一种数据类型。常用于对函数的参数及返回值的操作。假设、为float型数据,则(int)(x+y)强行将+的值转换成整型,x和y仍为float型。常见用法:保留小数点后几位,将小数点后第几位四舍五入等。,(类型名)表达式,类型名(表达式),2023/11/12,安徽理工大学计算机软件教研室,26,char short int unsigned longunsigned longfloatdoublelong double,必定的转换,混合运算时由低向高转换,自动转换还包括赋值运算时赋值号右端类型向左端类型的转换,自动转换:

16、在不同类型数据进行混合运算时,系统自动进行的类型转换。,2023/11/12,安徽理工大学计算机软件教研室,27,8.内部函数(P35)C/C+中提供了多种内部函数供用户编程序时直接调用,只需把包含内部函数的头文件,通过#include 预处理命令装入到程序中。例如,程序中要使用平方根函数sqrt,应该在程序加入:#include math.h“,2023/11/12,安徽理工大学计算机软件教研室,28,2.4 指针,每个变量在内存中存放都对应一段地址,第一个字节的地址就是变量的地址,将存放地址的变量称为指针变量。,1.基本概念,2023/11/12,安徽理工大学计算机软件教研室,29,指针

17、指针是一种变量,存放另一个变量的地址。在程序设计阶段无法确定一个变量的地址,只有到程序运行时才为变量分配存储空间。int x=4;int*p;p=p就是一个指针,存放x的地址。p指向x,*p的值为4,*p就是x。出现x的地方可以用*p代替,出现*p的地方可以用x代替。,p,x,2023/11/12,安徽理工大学计算机软件教研室,30,&x就是变量的地址 取内容*(地址)表示根据地址取内容如图中所示,*(&x)的值为4,2023/11/12,安徽理工大学计算机软件教研室,31,定义 例如:int*p;float*q;指针所指对象的类型。初始化在定义的同时赋初值,称为指针变量的初始化。例如:flo

18、at d=1.5,*p=/注意不能写做*p=&d,数据类型*标识符;,不是指针名的一部分,p,d,2.指针定义及初始化,2023/11/12,安徽理工大学计算机软件教研室,32,假定有定义:int*p,a;p=NULL;指针的值为NULL(0)表示不指向任何对象。p=,赋值运算,3.运算,2023/11/12,安徽理工大学计算机软件教研室,33,p+n(或p-n):p+n:指向后面的第个元素。p-n:指向前面的第个元素。p+n的值为:p的值n*sizeof(p指向的类型),如,有定义:int a,*p=假设a的地址为1000,则:p的值为1000p+3的值为:1000+3*sizeof(int

19、)=1000+3*4=1012,算术运算,2023/11/12,安徽理工大学计算机软件教研室,34,自增(+)和自减(-)p+、+p、p-、-p自增或自减后p指向前一个或后一个元素,*p+*(p+)*p p+(*p)+*p(*p)+,2023/11/12,安徽理工大学计算机软件教研室,35,指针相减两个类型相同的指针可以相减,结果为这两个地址差之间能够存放的数据个数(数据类型为指针所指的类型)。如,有定义:int*p1,*p2;假设p1指向1000,p2指向1008,则p2p1的值为:(1008-1000)/sizeof(int)=2,2023/11/12,安徽理工大学计算机软件教研室,36,

20、new 运算符形式:,单个变量空间的动态分配:指针=new 数据类型;指针=new 数据类型(初值);,或,4.new和delete,多个连续空间的动态分配:指针=new 数据类型长度;,2023/11/12,安徽理工大学计算机软件教研室,37,delete 运算符用于释放用new申请的动态存储空间,形式为:,delete 指针;delete 指针;,或,无需指明数组长度,只能释放由new申请的动态变量,例:,int a=3,*p=,2023/11/12,安徽理工大学计算机软件教研室,38,形式:,typedef 数据类型 新的数据类型名;,该语句作用是为已有的数据类型定义新的名称,使其更符合

21、Windows系统中的相关对象的含义,可以像标准C+中的数据类型一样使用这些新定义的类型。如:typedef char CHAR;CHAR c1;/等价于char c1;,2.5 typedef语句,2023/11/12,安徽理工大学计算机软件教研室,39,例2-3 用C/C+代码表达下列命题:1.能且只能被和中的一个数整除。解:或 2.ch是大写字母。解:思考上述命题可否描述为AchZ?为什么?,(m%3=0)&(m%2!=0)|(m%2=0)&(m%3!=0),(m%3=0)!=(m%2=0),ch=A&ch=Z,2.6 应用举例,2023/11/12,安徽理工大学计算机软件教研室,40,

22、#includeiostream.h#includeiomanip.h#includemath.hvoid main()float a,b,c;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)另一直角边=bendlsetw(11)周长=lendlsetw(11)面积=sendl;,例2-4 编写程序:要求输入直角三角形的斜边和一条直角边,求三角形另外一条直角边,周长和面积,输入(已知),处理(根据已知求未知),输出(结果),编程过程,2

23、023/11/12,安徽理工大学计算机软件教研室,41,#includeiostream.h#includemath.h#includeiomanip.hvoid main()int c1,c2,c3;char c4;int x;cinx;c4=x=0?+:-;/x的符号存入c4x=abs(x);/求整型数x的绝对值c3=x%10;/x%10为个位数字x=x/10;c2=x%10;c1=x/10;cout数符 百位数 十位数 个位数endl;coutsetw(2)c4setw(8)c1setw(8)c2setw(8)c3endl;,例2-5 编程输入一个三位整数,依次输出该数的正(负)号和百位

24、、十位、个位数字。,分离出符号位后分解各数位,2023/11/12,安徽理工大学计算机软件教研室,42,补充:格式化输出函数printf,数据输出:格式化输出函数 printf#include printf(Hello World!n);printf(“i=%d,j=%dn,i,j);printf(格式控制字符串,输出参数1,输出参数n);,用双引号括起来,表示输出的格式,要输出的数据,2023/11/12,安徽理工大学计算机软件教研室,43,printf格式控制字符串,printf(Hello World!n);printf(“i=%d,j=%dn,i,j);printf(Hin,fahr)

25、;格式控制字符串:普通字符:原样输出格式控制说明:按指定的格式输出数据,%与数据类型有关int型:%dfloat double型:%f,2023/11/12,安徽理工大学计算机软件教研室,44,格式化输入函数scanf,数据输入:格式化输入函数 scanf#include scanf(%lf,用双引号括起来,表示输入的格式,变量地址,2023/11/12,安徽理工大学计算机软件教研室,45,scanf格式控制字符串,格式控制字符串:格式控制说明:按指定的格式输入数据,%与数据类型有关int型:%dfloat型:%fdouble型:%lf普通字符:原样输入例如:scanf(%lf,输入:9.5,scanf(x=%lf,输入:x=9.5,尽量不要出现普通字符,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号