收藏 分销(赏)

大学计算机C语言数据类型运算符与表达式.ppt

上传人:仙人****88 文档编号:14677838 上传时间:2026-10-28 格式:PPT 页数:38 大小:631KB 下载积分:10 金币
下载 相关
大学计算机C语言数据类型运算符与表达式.ppt_第1页
第1页 / 共38页
大学计算机C语言数据类型运算符与表达式.ppt_第2页
第2页 / 共38页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,2,章 数据类型、运算符与表达式,C,语言程序设计,第,2,章 数据类型、运算符与表达式,2.1,程序实例,2.2,的数据类型,2.3,常量与变量,2.4,整形数据,2.5,实型数据,2.6,字符型数据,2.7,变量赋初值,2.8,各类数值型数据间的混合运算,2.9,算术运算符和算术表达式,2.10,赋值运算符和赋值表达式,2.11,逗号运算符和逗号表达式,2.1,一个简单的,C,程序实例,例如:输入圆的半径,r,,计算并输出该圆的面积,s,。,#include ,#define PI 3.1415926,int main(void),float r,s;,printf(“Input r value:”);,scanf(“%f”,s=PI*r*r;,printf(“s=%7.2fn”,s);,return 0;,为,C,程序的预处理部分,为符号常量声明,为函数首部,变量声明,语句部分,C,程序由函数(主函数与子函数)组成;,C,程序只执行,main(),主函数(一个程序只能有一个主函数);函数由函数首部和函数体组成。,函数体,数据类型,基本类型,构造类型,指针类型,空类型,整型,字符型,实型,(,浮点型,),枚举类型,单精度型,双精度型,数组类型,结构体类型,共用体类型,注意:在前几章中主要用到的是,“,基本类型,”,的数据。,2.2 C,的数据类型,2.3,常量与变量,一、常量和符号常量,1.,常量,常量即在程序运行过程中保持不变的量,,常量有不同的类型。例如,,123,为整常量,、,123.00,为实常量,、,3,为字符常量,、,“,COMPUTER,”,为字符串常量,。,2.,符号常量,:,用一个标识符代表一个常量,(必须先声明,后使用),其声明方式如下:,#define ,注:,#define,为常量声明语句,符号常量名一般使用大写英文字母表示,例如:,#define PI 3.1415926#define F1,“,%d,%f,%s,”,以后在程序中凡遇到,PI,都代表,3.1415926,遇到,F1,就代表,“,%d,%f,%s,”,。,PI,和,F1,就称为符号常量。,使用符号常量易犯的错误,例如:,#define PI=3.1415926,例如:,#define PI “3.1415926”,例如:,#define PI 3.1415926;,注意:理解符号常量的意义,掌握符号常量的使用方法。,二、变量,每一个变量都应有一个名字,,变量名由字母、数字和下划线组成,长度为,8,个字符,(,有的系统不同,),。,它在内存单元中占一定的存储单元,不同类型的变量所占据的内存单元大小不一样,。,编写变量名最好做到,“,见名识义,”,。,原则上,不同类型变量中存放与其类型一致的常量。,在程序运行中可以改变的量叫,变量,。变量也必须先声明,然后才能使用。,三、有关常量、符号常量和变量的说明,符号常量习惯上用大写字母作标识符。凡被定义了的符号常量的标识符,不能再在程序中被赋值。,变量名中的大、小写字母代表不同有变量。例,SUM,和,sum,及,Sum,代表的是三个不同的变量。,凡未被事先定义的,不作为变量名。要求,“,先定义,后使用,”,。,每一个变量被指定为唯一确定的类型。,不同类型的变量其长度是各不相同。,2.4,整形数据,整型常量即整常数。整常数用以下三种形式表示:,、,十进制整数,:例:,354,,,-756,,,0,。,、,八进制整数,:以,0,开头的数是八进制数。,例:,0123,,,-011,分别表示,(123),8,,,(-11),8,。,、,十六进制数,:以,0 x,开头的数是十六进制数。,例:,0 x123,,,-0 x12,分别表示,(123),16,,,(-12),16,。,整型数据在内存中的存放形式,数据在内存中是以二进制形式存放的。如果定义了一个整变量,i,:,int i;,/*,定义为整型变量*,/,i=10;,/*,给,i,赋以整数,10*/,i,十进制整数的,10,是以二进制方式,1010,存在内存中。每一个整型量在内存中占,2,个字节。如上图所示。,注意:正整数按原码存储,负整数按补码形式存储。有关补码和反码自己看书理解一下。,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,10,整型变量的分类,基本整型,:,以,int,表示,(,占,4B),(1),带符号:,int,(2),不带符号:,unsigned int,短整型,:,以,short int,表示,(,占,2B,),(1),带符号:,short,(2),不带符号:,unsigned short,长整型,:,以,long int,表示(占,4B,),(1),带符号:,long,(2),不带符号:,unsigned long,整型变量定义,声明变量的含义:告诉系统要使用什么名称的变量、变量的数据类型、在内存中给变量分配存储空间。,例如:,int a,b;long x,y;,这两句分别定义了,a,b,为基本整型变量,,x,y,为长整型变量。变量,a,b,x,y,均占,4B,内存单元。,内存,地址,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,变量,a,b,x,y,整型数据的溢出,如一个,2,字节,short int,型变量的最大允许值为,32767,,最小值为,-32768,。如果超出这个值,就会出现溢出现象,溢出分上溢(,Overflow,)和下溢(,Underflow,)。溢出时数据即发生翻转现象,可能从最大值翻转为最小值,也可能从最小值翻转为最大值等。,2.5,实型数据,实数又叫作浮点数。它有两种表示形式。,十进制小数形式,。它由数字和小数点组成(注必须有小数点)。例:,.123,,,123.,,,123.00,。,指数形式,。例如,123e4,或,123E4,都表示,123,10,4,。,注意,:字母,e,之前必须有数字,而且,e,后面的指数必须为整数。,2,、实型变量的分类,C,实型变量分为单精度(,float,型)、双精度(,double,型)和长双精度型(,long double,)三类。,实型数据,类型,二进制位数,有效数字,数值范围,float,32,6,7,10-,37,10,38,double,64,15,16,10,-307,10,308,long double,128,18,19,10,-4931,10,4932,实型变量的声明:,float x1,x2;double y1,y2,y3;,long double z1,z2;,2.6,字符型数据,C,语言的字符常量是用,单引号,括起来的,一个字符,。如,a,,,f,,,#,等都是字符常量。应注意的是,a,和,A,是不同的字符常量。,C,语言允许使用一种特殊形式的字符常量,就是以 一个,“,”,开头的字符序列,即转义符。见表,2.2(P23,页)。常用转义符有:,r,b,n,t,0,v,f,a,”,?,ddd,xhh,注意:记住常用转义符及其含义。,字符型变量用存放字符常量,,一个字符变量只能存放一个字符。,字符变量的定义形式:,char c1,c2,;,字符变量的赋值:,c1=,a,;,c2=,b,;,在所有的编译系统中都规定以一个字节来存放一个字符,或者说一个字符变量在内存中占一个字节。,将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的相应的,ASCII,码放到存储单元中。例如字符,a,的,ASCII,码为,97,,,b,为,98,,在内存中变量,c1,,,c2,的值,实际上是以二进制形式存放的,。,如:,char c1=,a,;a,既然在内存中,字符数据以,ASCII,码存储,它的存储形式就与整数存储形式类似。使,字符型数据和整型数据之间可以通用,。一个字符既可用字符形式输出,也可用整数形式输出。,0,1,1,0,0,0,0,1,存储字母,a,的,ASCII,码值,97,字符常量是一对单引号括起来的单个字符。而,字符串常量是由一对双引号括起来的字符序列,。,例:字符串,“,How do you do,”,、“,a,”,、“,123,”,。,C,规定:在每一个字符串的结尾加一个,“,字符串结束标志,”,,以便系统据此判断字符串是否结束。,C,规定以字符,0,作为字符串结束标志。,注意:,a,和,“,a,”,的不同之处在与前者占,1B,、后者占,2B,。,a,“,a,”,a,a,0,字符类型变量值的输出举例,#include ,int main(void),char c1,c2;,c1=97;,c2=98;,printf(“%c%cn”,c1,c2);,printf(“%d%dn”,c1,c2);,return 0;,输出结果形式如下:,a b,97 98,将此程序进行编辑、编译、链接并运行。,要求理解为什么输出结果是这样的?,2.7,变量赋初值,C,语言允许先定义变量,再给变量赋值,也可在定义变量的同时给变量赋值。,int a,b;,a=123;,b=456;,这种形式叫作:,先定义,后赋值,int a=3;,float f=3.45;,char c=a;,这种形式叫作:,变量的,初始化,也可以使被定义的变量的一部分赋初值。,int a,b=3;,或,int a=3,b=4,c=5;,高,double float,long,低,int char,short,图中,横向向左的箭头表示必定的转换,,如字符数据必定先转换为整数,,float,型数据在运算时一律先转换成双精度型,以提高运算精度。,即使是两个,float,型数据相加,也先都化为,double,型,然后再相加。,纵向,的箭头表示当前运算对象为不同类型时转换的方向,。例,int,型与,double,型数据进行运算,先将,int,型的数据转换成,double,,然后再进行运算。,2.7,各类数值型数据间的混合运算,2.9,算术运算符和算术表达式,1,、基本的算术运算符,2,、算术表达式和运算符的优先级与结合性,3,、强制类型转换运算符,4,、自增、自减运算符,5,、有关表达式使用中的问题说明,1,、基本的算术运算符,+,、(模运算符,或叫作取余运算符,如,8,5,的值为,3,)。,两个整数相除的结果为整数,如,7,5,得,1,,舍去小数部分。一般都采取,“,向零取整,”,的方法,即,5,3,1,,,5,3,-1,,取整后向零靠拢。,如果参加、,、运算的两个数中有一个数为实数,则结果是,double,型,因为所有实数都 按,double,型进行运算。,注意:,%,运算要求运算符两的运算对象均为整型,2,、算术表达式和运算符的优先级与结合性,所谓算术表达式即:,用算术运算符和括号将运算对象连接起来、符合,C,语法规则的式子。,其中运算包括常量、变量、函数等。,如:,a+b/c-1.6+,b,为合法算术表达式。,C,语言规定了运算符的,优先级,和,结合性,,在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除后加减。如表达式,a-b*c,,,b,的左侧为减号,右侧为乘号,而乘号优先于减号,因此,相当于,a-(b*c),。如果在一运算对象两侧的运算符的优先级别相同,如,a-b+c,则按规定的,“,结合方向,”,处理。,有关结合性的问题将会在以后进行详细的说明。,3,、强制类型转换运算符,可以利用,强制类型转换运算符,将一个表达式转换成所需类型。例如:,(double)a,(,将,a,转换成,double,类型,),(int)(x+y),(,将,x+y,的值转换成整型,),(float)(5%4),(,将,5,4,的值转换成,float,型,),其一般形式为:,(类型名)(表达式),注意:,表达式应该用括号括起来。如果写成,(int)x+y,则只将,x,转换成整型,然后与,y,相加。,说 明,在强制类型转换时,得到一个所需要类型的中间变量,原来的变量的类型未发生变化。如:,(int)x,(,不要写成,int(x),如果,x,原指定为,float,型,进行强制类型运算后得到一个,int,型的中间变量,它的值等于,x,的整数部分,而,x,类型不变(仍为,float,型)。,例,强制类型转换,int,main(,void,),float,x;,int,i;,x=3.14;,i=(int)x;,printf(,“,x=%f,i=%d,”,x,i);,return,0;,运行结果:,x=3.149000 i=3,X,类型仍为,float,,值仍为,3.14,从上可知,有两种类型转换,一种是在运算时不必用户指定,系统自动进行的类型转换,如,3+6.5,。第二种是强制类型转换。当自动类型转换不能实现目的时,可以用强制类型转换,如,“,”,运算符要求其两侧均为整型量,,若,x,为,float,型,则,“,x%3,”,不合法,必须用:,“,(int)x%3,”,。这个表达式的运算过程是:强制类型转换运算优先于运算(可在附录,中查到),因此先进行,(int)x,的运算,得到一个整型的中间变量,然后再对,3,求模。,4,、自增、自减运算符,所谓增、自减的作用是使变量的值增,1,或减,1,。,i+,i-,在调用,i,之后,再使,i,的值加或减,1,+i,-i,在调用,i,之前,先使,i,的值加或减,1,。,粗略地看,,i+,和,+i,的作用均相当于,i=i+1,。但,+i,和,i+,不同之处在于:,+i,是先执行,i=i+1,后,再使用,i,的值;,而,i+,是先使用,i,的值后,再执行,i=i+1,。,#include ,int main(void),int i=3,a,b,c,d;,a=+i;,b=-i;,c=i+;,d=i-;,printf(“i=%dn”,i);,printf(“a=%d b=%d ”,a,b);,printf(“c=%d d=%dn”,c,d);,return 0;,运行结果为:,i=3,a=4 b=3 c=3 d=4,有关自增、自减的说明,自增运算符(,+,)和自减运算符(,-,),,只能用于变量,,而不能用于常量或表达式,如,5+(a+b)+,都是不合法的。因为,5,是常量,常量的值不能改变。,+,和,-,的结合方向是,“,自右至左,”,,见附录,。而前面学过的算术运算符的结合方向为,“,自左至右,”,。如果有,-,i+,,,i,的左面是负号运算符,右面是自加运算符。设,i,原值为,3,,若按左结合性,相当于,(-i)+,,而,(-i)+,根据前面所述,表达式不能自加,显然是不合法的。,从附录,可知负号运算符和,“,+,”,运算符同优先级别,而结合方向为,“,自右至左,”,(,右结合性,),即它相当于,-(i+),,如果有,printf(,“,%d,”,-i+),,则先取,i,出的值,3,,输出,-i,的值,-3,,然后,i,增值为,4,。注意,-(i+),是先用,i,的原值,3,加上负号输出,-3,,再对,i,加,1,不要认为先加完后再加负号,输出,-4,,这是错误的。,有关自增、自减的补充,1,void main(void),int x,i=3;,x=(i+)+(i+)+(i+);,printf(x=%d i=%d,x,i);,结果为:,x=9 i=6,void main(void),int x,i=3;,x=(+i)+(+i)+(+i);,printf(x=%d i=%d,x,i);,结果为:,x=18 i=6,以上为自增在赋值表达式中的运算结果,要注意,左面由于是后,+,,先提取,i,的原值相加,即,3+3+3,得,9,。而右面是先,+,,故先得,i,为,6,,再,6+6+6,得,18,i,为,6,的时刻,左面,i,是在做完赋值后变为,6,的,而右面,i,是在赋值前已变为,6,了。,有关自增、自减的补充,2,main(),int i=3;,printf(%d,(i+)+(i+)+(i+);,结果为:,12,main(),int i=3;,printf(%d,(+i)+(+i)+(+i);,结果为:,15,以上为自增在函数参数中的运算结果。,以上两程序都在第一个,printf,后再一句,printf(“i=%d”,i);,则显示,i=?,2.10,赋值运算符和赋值表达式,1,、赋值运算符,赋值符号,“,=,”,就是,赋值运算符,,它的作用是将一个数据赋给一个变量。如,“,a=3,”,的作用是执行一次赋值操作。把常量,2,赋给变量,a,。也可以将一个表达式的值赋给一个变量(计算赋值)。,2,、类型转换,如果赋值运算符两侧的类型不一致,但都是数值或字符型时,在赋值时要进行类型转换。,实型数据赋给整型变量,整型数据赋给单、双精度变量,double,型数据赋给,float,变量,字符型数据赋给整型变量,int,、,long,型数据赋给一个,char,变量,注意:这里指的是系统自动进行转换。,2.11,逗号运算符和逗号表达式,C,语言提供一种特殊的运算符,逗号运算符,。用它将两个表达式连接起来。如:,3+6,7+8,。这种表达式叫作,逗号表达式,,其一般形式为:,表达式,1,,表达式,2,逗号表达式,的求解过程是:先求解,表达式,1,,再求解,表达式,2,。,整个逗号的值是表达式,2,的值,。,例如:,“,5,6,,,7,9,”,的值为,16,。,从附录,中查出,,逗号运算符的优先级别最低,,而结合方向是,“,自左至右,”,(左结合)。那么如果有下面的表达式:,a=5*6,a+8,应理解为由,a=5*6,和,a+8,两个表达式构成了一个逗号表达式。若,a,的初值为,4,,上述逗号表达式的运算过程是:,先求解,a=5*6,得,a,值为,30,(表达式,1,的值)。,再求解,a+8,得,30,8,为,38,(表达式,2,的值)。,整个逗号表达式的值为,38,(表达式,2,的值)。,
展开阅读全文

开通  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 

客服