收藏 分销(赏)

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

上传人:s4****5z 文档编号:13990873 上传时间:2026-05-23 格式:PPT 页数:49 大小:831.50KB 下载积分:10 金币
下载 相关 举报
第2章 数据类型运算符和表达式.ppt_第1页
第1页 / 共49页
第2章 数据类型运算符和表达式.ppt_第2页
第2页 / 共49页


点击查看更多>>
资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,高级语言程序设计,南京邮电大学传媒与艺术学院,第,2,章,数据类型、,运算符与表达式,学习目标,理解常量和变量的概念。,熟悉,C,语言的基本数据类型:,整型、实型和字符型数据的表示及范围。,掌握,C,语言的基本运算符及表达式。,2.1 引言,程序数据结构算法,程序:,编写程序的目的是利用计算机完成,某一问题的求解任务,数据:,数据是计算机程序在运行时的处,理对象,算法:,对数据的求解操作通过程序步骤,,既算法反映出来,2.2 C,语言的字符集和词法约定,#include,#define,PI,3.14,void main(),int,choice;,float,radius,area,perimeter;,scanf(%d,%f,&,choice,&radius,);,if,(choice,=1)/*,选择,1,,计算面积*,/,area=PI*radius*,radius,;,printf(area,=%,f,area,);,if,(choice,=2)/,选择,2,,计算周长,perimeter=2*PI*radius;,printf(perimeter,=%,f,perimeter,);,【,例,2-1】,一个,C,程序实例,根据用户的选择,,计算以,radius,为半径的圆的面积或周长。,2.2.1 C,语言的字符集,字符是组成语言的最基本元素。,C,语言的字符集由字母,数字,空格,标点和特殊字符组成:,1.,字母:,大小写字母共,52,个,2.,数字:,0,9,共,10,个,3.,空白符:,空格符、制表符、换行符等统称为空白符,4.,标点和特殊字符:,包括表示一条语句结束的“;,”,以及逗号表达式中的“”等。,2.2.2 C,语言词汇,C,语言使用的词汇分为六类,1.,标识符,:就是用来标识变量名、符号常量名、函数名、类型名、文件名等的有效字符序列。,在使用标识符时需要注意以下几点:,1,)标识符命名应尽量作到见名知意。,2,),C,语言的标识符大小写字母敏感,即代表不同的变量。,例如,PI,和,pi,会被认为是两个不同的标识符。,3,)标识符的长度受不同版本的,C,语言编译系统以及具体计算,机系统的限制。,2.2.2 C,语言词汇,C,语言的关键字分为以下几类:,1,)类型说明符。用于定义、说明变量、函数或其他数据结构的类型。,2,)语句定义符。用于表示一个语句的功能。,3,)预处理命令字。用于表示一个预处理命令。,2,.,关键字:关键字是由,C,语言规定的具有特定意义的字符串,通常也称为保留字。,如例,2-1,中用到的,float,等。,如例,2-1,中用到的,if,。,如例,2-1,中用到的,include,。,C,语言的关键字,3,运算符,C,语言中含有相当丰富的运算符。运算符与变量,函数一起组成表达式,表示各种运算功能。,4,分隔符,在,C,语言中采用的分隔符有逗号和空格等。,逗号主要用在类型说明和函数参数表中,分隔各个变量。,空格多用于语句各单词之间,作间隔符。,5,常量,C,语言中使用的常量可分为数字常量、字符常量、字符串常量、符号常量、转义字符等多种。,C,语言的关键字,6.,注释符,1,)以“,/*”,开头并以“*,/”,结尾的串,用来注释一段;,例,2-1,中,“,/*,选择,1,,计算面积*,/”,2,)用“,/”,注释一行。,例,2-1,中的:,if(choice,=2),后的“,/,选择,2,,计算周长”,2.3,常量和变量,2.3.1,常量,概念:,在程序运行过程中,其值不发生改变的,量称为常量。,常量数据的类型一般为上述基本类型中的一种,,如:,整型常量:,3,,,0,,,-1,实型常量:,1.2,,,-2.345,字符常量:,a,,,1,从使用形式上看,常量包括字面常量和符号常量,1,)字面常量。直接以数据值表示的常量,称字面,常量或直接常量,例,2-1,中的,2,便是一个字面常量。,2,)符号常量。以标识符号(以下简称标识符)表,示的常量称为符号常量,例,2-1,中的,PI,就是一个符号常量,并且在使用之前需通过,#define,命令定义。定义后,在程序中,,PI,将一直代表,3.14,。,为什么要引,入符号常量,2.3,常量和变量,2.3.2,变量,概念:,在程序运行过程中值可以改变的量,,称为变量。,例,2-1,中,,choice,,,radius,等为变量。执行程序的输入语,句后,这两个变量依次保存,2,和,1.0,,即变量值分别为,2,和,1.0,。,要区别开,变量名,和,变量值,以及,变量的地址,这三个概念。,2.4,数据类型(,Data Type,),数据类型,基本类型,构造类型,指针类型,空类型,整型,实型(浮点型),字符型,枚举类型,数组类型,结构体类型,共用体类型,单精度实型,双精度实型,短整型,基本整型,长整型,2.4.2,整型数据,1,整型常量,即表示整数的常量,,C,语言中的整数有,3,种表示形式:,1,)十进制形式。如,99,,,-1,。,2,)八进制形式。以数字,0,打头:如,012,,,0,。,3,)十六进制形式。以,0 x,(,0X),打头:如,0 x12,,,0Xff,。,常见错误:,1,)把表示八进制和十六进制的,0,和,0 x,误写成,o,和,ox,。,2,)八进制中出现超过“,7”,的数。,2.,整型变量,有符号整型(,signed,int,):,通常简写为,int,,在内存中占两个字节。,int,型变量的范围为,-32768,32767,。,无符号整型(,unsigned,int,):,可简写为,unsigned,。在内存中占两个字节,,unsigned,变量的范围为,0,65535,。,有符号短整型(,signed short,int,):,可简写为,short,,范围与,int,相同。,无符号短整型(,unsigned short,int,):,可简写为,unsigned short,,范围与,unsigned,int,相同。,有符号长整型(,signed long,int,):,可简写为,long,,在内存中占四个字节,范围为,-2,31,2,31,-1,。,无符号长整型(,unsigned long,int,):,可简写为,unsigned long,,范围为,0,2,32,-1,。,【,例,2-2】,请观察下面程序的运行结果,#include,void main(),short,n=32768;,printf(n,=%,d,n,);,程序运行结果,:,n=,-,32768,例,2-2,思考,请观察下面程序的运行结果,#include,void main(),unsigned,short n=32768;,printf(n,=%,d,n,);,程序运行结果,:,n=32768,2.4.2,实型数据,1,实型常量,1,)十进制数形式:由数码,0 9,和小数点组成。例如:,0.0,,,.25,,,5.789,,,0.13,,,5.0,,,300.,,,-267.8230,等均为合法的实数。,注意:,小数点不能缺。,2,)指数形式:,123e3,,,.123e6,,,123.E3,,,1.23E5,。,指数形式的,规范化形式,为:尾数中小数点左边有且只能有一位非零数字。,注意,:,e,(,E,)前一定要有数字(尾数),e,(,E,)后一定要有整数(指数),尾数和,e,(,E,)之间不能有任何分隔符,常见的错误书写形式:,E1,原因:阶码标志,E,之前无数字。,53.-E3,原因:负号位置不对。,2.7E,原因:无阶码。,2.,实型变量,实型数据在内存中的存放形式:,所以实型数据,-111.1101B,在内存中的存放形式为:,单精度型,float,单精度型占,4,个字节内存空间,只能提供七位有效数字。,双精度型,double,双精度型占,8,个字节内存空间,可提供,16,位有效数字。,实型变量分为两类,【,例,2-3】,分析观察以下程序的运行结果,#include,void main(),float f;,double d;,f=111111.111111;,d=111111.111111;,printf,(f=%,fnd,=%,fn,f,d,);,程序运行结果:,f=111111.109375,d=111111.111111,2.4.4,字符型数据,1,字符常量,字符常量有两种表示方法:,1,)普通表示形式,,用单引号括起的单个字符。如,A,,,a,,,$,,,等。,2,)转义字符表示形式。,转义字符有以下三种用法:,表示控制字符,表示特殊字符,表示所有字符,,常用的转义字符及其含义,转义字符,含义,n,换行,t,水平制表,b,退格,r,回车(不换行),0,空字符,单引号,”,双引号,一个反斜杠字符,ddd,ddd,指要表示字符的,ASCII,码的一到三位八进制数,xhh,hh,指要表示字符的,ASCII,码的一到两位十六进制数,【,例,2-4】,转义字符的使用举例,#include,void main(),printf(NumtNamen);,printf(x31t101n);,程序运行结果(其中代表一个空格):,NumName,1A,2,字符型变量,用以保存字符类型数据的变量为字符型变量。,例如:,char,c1;,字符型变量的类型说明符,字符型变量,字符型变量保存的是字符数据的,ASCII,,,字符型变量只占一个字节。,【,例,2-5】,字符变量的赋值举例,#include,void main(),char c1,c2,c3,c4;,c1=A;c2=65;c3=x41;c4=101;,printf(c1=%c;c2=%c;c3=%c;c4=%cn,c1,c2,c3,c4);,printf(c1=%d;c2=%d;c3=%d;c4=%dn,c1,c2,c3,c4);,程序运行结果:,c1=A;c2=A;c3=A;c4=A,c1=65;c2=65;c3=65;c4=65,【,例,2-6】,大小写字母的转换,#include,void main(),char c1,c2;,c1=a;,c2=A;,printf(%c%cn,c1,c2);,c1=c1-32;/,小写字母转大写字母,c2=c2+32;/,大写字母转小写字母,printf(%c%cn,c1,c2);,程序运行结果,:,a A,A a,3,字符串常量,用一对双引号括起来的零个或多个字符序列称为,字符串,。,字符串的长度是指该字符串的,有效,字符个数,不包括双引号以及字符串结束标志。,示例:,字符串:,Teacher,实际串长为,7,,占了,8,字节空间,(,字符串结束标志,也占一个字节,),。,常见错误:,1,)混淆单个字符和只包含一个字符的字符串的区别,。,例:,char,ch,=c;,语句错误,字符串,c,在内存中占两个字节空间,,char,类型变量,ch,占一个字节内存空间。正确的书写形式为:,char,ch,=c;,2,)以为存在包含零个字符的字符数据。,例,:,char ch=;,只有包含零个字符的空串,但没有包含零个字符的空字符常量,正确的书写形式应该为:,char ch=0,。,如果想把一个空格字符保存到,ch,变量中,空格字符也要表示出来,例如:,char,ch,=;,(其中代表一个空格),2.5,运算符及表达式,算术运算符,+-*/%+-,关系运算符,=,|&,赋值运算符,=,及其复合赋值运算符,条件运算符?:,逗号运算符 ,,指针和取地址运算符 *,&,求字节运算符,sizeof,强制类型转换运算符(类型),分量运算符,.-,下标运算符,其他运算符 例如,(),语言的运算符分为以下几类:,表达式:,由运算符和运算对象组成的合法式子。,2.5.2,算术运算符和算术表达式,1.C,语言中基本的算术运算符,对象数,运算符,操作,运算对象的类型,结果类型,单目,+,取原值,整型或实型,整型或实型,-,原值取反,双目,+,加法,整型或实型,整型或实型,-,减法,整型或实型,整型或实型,*,乘法,整型或实型,实型或实型,/,除法,整型或实型,实型或实型,%,整除取余,整型,整型,注意:,1,)参与运算的对象数。,2,)参与运算对象的类型。,需要注意的是取模运算,即求余数运算,%,,要求,两侧的操作对象均为整型数据。,3,)运算结果的类型。,C,语言规定:两个整数相除,其结果也为整数,小,数部分被舍弃。,例如,,5/2,得,2,,结果为整型。,【,例,2-7】,字符型数据的算术运算,#include,void main(),char c;/,定义字符型变量,int,n;/,定义整型变量,c=9;/,给字符,9,赋值给,c,n=c-0;/,将,c,中的字母变成数字,9,后赋给,n,printf(%c%dn,c,n);,程序运行结果:,9 9,字符,数字,2,自增、自减运算符及其表达式,对象数,运算符,操作,运算对象的类型,结果,类型,单目,+(,前缀,),变量自增,1,,然后使用,整型、实型,或字符型变量,类型,不变,+(,后缀,),先使用原变量值,然后自增,1,-(,前缀,),变量先减,1,,然后使用,-(,后缀,),先使用原变量值,然后减,1,在使用自增、自减运算符时,需要注意以下几点:,1,),+,和,-,只能用于变量,不能用于常量和表达式。,例如以下是错误用法:,a+,;,+(,a+b,);,#define ONE 1 ONE+;,2,)出现多个运算符时,编译器在处理时尽可能多的从左到右将若干个字符组合成一个运算符。,i+j,应解释为,(,i+)+j,,而不是,i+(+j,),。,3,)在,C,语言中调用函数时,实际参数的处理顺序是从右到左。,【,例,2-8】,分析观察下面程序的运行结果,#include,void main(),int i=1;,printf(%d,%d,i,i+);,程序运行结果:,1,1,2.5.3,赋值运算符和赋值表达式,1,赋值运算符,在,c,语言中,用,=,表示赋值运算符,它的作用是将右侧表达式的值赋给左侧变量。,例如,:,a=3,/,常数,3,赋给变量,a,a=b+c+1,/,算术表达式的结果赋给变量,a,左边只能取变量,不能为常量或表达式;,右边可取变量、常量或任意表达式。,2,变量初始化,定义变量时给变量赋予初值称为变量初始化。,例如:,int,i=0;,定义,i,为整型变量,同时初始化为,0,float f=2.25;,定义,f,为单精度实型变量,同时初始化为为,2.25,char c=0;,定义,c,为字符型变量,同时初始化为为字符,0,分清初始化和赋值语句赋值的概念,int,i=0;,是初始化,int,i;,i=0;,是赋值,i=j=k=0,;正确,int,i=j=k=0,;错误,用同一值初始化几个变量的正确的写法应该为:,int,i=0,j=0,k=0;,3,复合的赋值运算符,复合赋值运算的一般格式为:,变量 双目运算符,=,表达式,例如:,c+=32,等同与,c=c+32,z*=a-b,等同与,z=z*(a-b),2.5.4,逗号运算符和逗号表达式,逗号表达式一般的形式:,表达式,1,表达式,2,表达式,3,.,表达式,n,表达式,n,的值就是逗号表达式的最终取值。,2.6,运算符的优先级和结合性,对于多个运算符组成的表达式进行求值运算时,需要根据运算符的优先级别高低次序和结合性执行。,一般规则是:,1,)按运算符的优先级高低次序执行。,C,语言中,运算符的运算优先级共分为,15,级。在表达式中,优先级较高的先于优先级较低的进行运算。,例如,先乘除后加减,如果有括号,则先计算括号。,2,)如果一个运算对象(或称操作数)两侧运算符的优先级相同,则按,C,语言规定的结合方向(结合性)进行。,C,语言中各运算符的结合性分为左结合性,(,自左至右,),和右结合性,(,自右至左,),两种。,2.7 C,语言中的数据类型转换,以下情况需要进行数据类型转换:,不同数据类型的运算对象进行混合运算,需要将一个表达式的结果转换成期望的类型时,就需要依据数据类型转换规则进行转换。,2.7.1,混合运算时的类型转换规则,1,)综向箭头表示必定会进行的转换,如,float,型数据必先转换为,double,型数据,然后同另外操,作数进行运算;依此类似,如有,char,型或,short,型数据,,必先转换得到,int,型,然后运算。,2),横向箭头表示当运算对象为不同类型数据时的转换方向,如,int,同,unsigned,数据运算,,int,型转换为,unsigned,型后方,可进行运算转换。,int,同,double,数据运算,,int,直接转换为,double,型后进行运算,不能理解为先转化为,unsigned,int,型,然后转换为,long,int,型,最后再转换为,double,型。,2.7.2,赋值时的类型转换,当赋值运算符两侧的类型不同时,需进行类型转,换,这种转换也是系统自动进行的。,具体转换原则见课本说明,依据赋值运算符左侧,数据的类型而定。,2.7.3,强制类型转换,在,C,语言中,允许强制类型转换,将某一数据的,数据类型转换为指定的另一种数据类型。,强制转换运算符组成的运算表达式的一般形式为:,(,类型名,)(,表达式,),例如:,(,int)(x,+y),将,x+y,的值转换成整型,即取整数部分。,(,float)x,+y,将,x,转换成单精度型。,小结,掌握,C,语言的基本词汇,掌握常量和变量的概念,符号常量的定义形式,了解引入符号常量的意义,熟悉三种基本数据类型:整型、实型和字符型的基本特征和用法,掌握如何实现变量的定义、赋值和初始化,掌握算术运算符、逗号运算符、赋值运算符及其相关表达式,理解运算符的优先级和结合性,理解,C,语言中的数据类型转换问题,第一次,P27:,2.2、2.3,的(,2),、(,4),、(5),第二次,P27:,2.4,、,2.7、2.8,第三次,P27:,2.6,、,2.9,的(,1),、(,3),、(5),作业,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服