收藏 分销(赏)

C语言03type.ppt

上传人:xrp****65 文档编号:14014798 上传时间:2026-05-27 格式:PPT 页数:63 大小:342.50KB 下载积分:10 金币
下载 相关
C语言03type.ppt_第1页
第1页 / 共63页
C语言03type.ppt_第2页
第2页 / 共63页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第三章,基本数据类型、运算符、输入输出函数,1,数据类型,为什么数据要分类,对数据进行分类,以便让计算机进行相应的存储和处理,C,语言的基本数据类型有:,char,(,字符型),int,(,整型),float,(,实型或浮点型),double,(,双精度实型,),2,常量,概念:,程序运行过程中其值不能被改变的量,常量的分类:,整型常量,实型常量,字符常量,字符串常量,符号常量,整型常量,整型常量即整常数,1.,整数,取值范围:一般占一个机器字,字长,2,字节,取值范围为,-32768,+32767,表示形式:,十进制整数 以非,0,开头的整数,八进制整数 以,0,开头的整数,十六进制整数 以,0 x,或,0,X,开头的整数,例:,-123,、,456,、,0123,、,-0 x123,2.,长整数,取值范围:占四字节,2147483648,+2147483647,表示形式:在整数后面加字母,L,或,l,例:,456l,、,-0456l,、,0 x456l,3.,关于无符号数,若整数是无符号数,整常量能表示的取值范围将相应的扩大一倍,实型,常量,1.,实型常量又称浮点数常量,,只使用十进制,,有两种表示形式:,定点数形式,由正负号、整数部分、小数点、小数部分组成,例:,0.0,、,12.34,、,0.123,、,.123,、,-123.0,、,-123.,指数形式,由正负号、整数部分、小数点、小数部分、,E(e),后带或不带正负号的整数组成,合法:,1e-5,、,-3.14157E+7,、,-28e-005,、,123.45E0,非法:,E8,、,3E-5.6,、,.e2,、,4e,、,e,2.,实型常量不分单、双精度,都按双精度,double,型,处理,字符常量,1.,字符常量是用,一对单引号,(作为定界符)括起来的一个字符,字符,不能,是单引号,、,双引号,“,、,反斜杠,。,例如:,A,a,5,?,+,!,$,。,2.,字符常量具有数值,即其,ASCII,代码值。如:,C=A;,与,C=65;,等价。,3.,一种特殊的字符常量转义字符,(,见表,3-1,),一对单引号括起来,里面是反斜线开头,后跟一个字符,如,n,。,或反斜线开头,后跟一个一到三位八进制数,或后跟一个一到二位,x,开头的十六进制数。,常用转义字符,符号,ASCII,值,功能,ddd,8,进制数表示的,ASCII,字符,xhh,16,进制数表示的,ASCII,字符,a,7,响铃,t,9,水平制表,n,10,换行,r,13,回车,b,8,退格,39,单引号,34,双引号,92,反斜线,0,0,空字符,字符串常量,1.,字符串常量一对双引号括起来的字符系列。,例,:,hello!,program,a,123.45,2.,存储形式,字符串中的每个字符占一个字节,在其尾部自动追加一个字符,0,。,h e l l o !0,104 101 108 108 111 33 0,符号常量,符号常量即用一个特定的符号来代表一个常量,定义:,#define,符号常量 常量,(字符串),例:,#define R 5.179,符号常量须“先定义,后使用”,一般用大写字母,例:,#define PRICE 35,#define NUM 10,#define SUM PRICE*NUM,main(),printf(total,=%dn,SUM);,结果:,total=350,3,变量,概念:,在程序运行过程中,其值能被改变的量,。,对所使用的变量要“先定义、后使用”(,使用,标识符,进行定义,),以便编译时为其分配相应的存储单元。,普通变量定义形式,数据类型 变量名表;,例:,int,a,b;(,定义两个整数,),分类,整型变量,、,实型变量,、,字符型变量,变量初始化,C,标识符,用来标识变量名、符号常量名、函数名、数组名、文件名的有效字符序列。,标识符必须由字母或下划线开头,后跟字母或下划线或数字,字母区分大小写。,标识符的长度(字符个数)无统一规定,随系统而不同,一般只能识别前,8,个字符。,选择标识符时,提倡使用有意义的英文单词,注意做到“,见名知义,”,关键字,是由语言规定的具有特定意义的字符串,通常也称为,保留字,,不允许作标识符(见附录),整型变量,数据类型,所占位数,数 值 范 围,int,short,16,-3276832767 (-2,15,2,15,-1),long,int,32,-21474836482147483647(-2,31,2,31,-1),unsigned,int,16,0 65535 (0 2,16,-1),unsigned short,16,0 65535 (0 2,16,-1),unsigned long,32,0 4294967295(0 2,32,-1),数据类型说明符,:,int,short,long,main(),int,a,b,s,;,scanf(“%d,%,d”,&a,&b,);,s=,a+b,;,printf(“%d”,s,);,输入:,11 22,输出:,33,实型,变量,main(),float,x,y;,x=111111.111;y=222222.222;,printf(%fn,x+y,);,运行结果为,333333.328125,数据类型,所占位数,数值范围,有效数字,float,32,10,-,37,10,38,67,double,64,10,-,307,10,308,1516,long double,128,10,-,4931,10,4932,1819,数据类型说明符,:float,,,double,字符型变量,一个字符变量在内存中,占一个字节,将一个字符常量赋值给一个字符变量,实际上是把该字符的,ASCII,代码放到字符变量对应的内存单元中去,字符数据与整型数据的存储形式相类似,可以相互赋值或混合运算,,一个字符数据既可以以字符形式输出,也可以整数形式输出,.,数据类型说明符:,char,例,1,:,main(),char a,b;,a=a;b=b;,printf,(%c,%cn,a,b);,printf(,%d,%dn,a,b);,例,2,:,main(),int,a;char b;,a=a;b=98;,printf(%c,%cn,a,b);,printf(%d,%dn,a,b);,运行结果:,a b,97 98,变量初始化,定义变量时仅为变量分配内存,并不对这部分内存进行清空操作,分配作变量的内存中的原值被保留,且其值无法确定。因此,变量在参与运算前应,初始化,,赋予初值,以免产生逻辑错误。,C,语言规定,可以在定义变量的同时给变量赋初值。,例如:,int,a=2,c=3;,float pi=3.14;,char c1=a,c2=9;,如果要对,n,个同类型的变量赋相同的初始值,也要分别赋值。,例如:,int,a=10,b=10,c=10;,int,a=b=c=10;,错误,!,4,运算符和表达式,-1,运算符是告诉编译程序执行特定算术或逻辑操作的符号,算术运算符和算术表达式,赋值运算符和赋值表达式,关系运算符和关系表达式,逻辑运算符和逻辑表达式,条件运算符和条件表达式,逗号运算符和逗号表达式,4,运算符和表达式,-2,指针运算符,*,sizeof,运算符,位运算符,*,不同类型数据之间的转换,运算符优先级和结合性,表达式和表达式语句,(,如何按照条件写表达式,),4.1,算术运算符,1.,加、减、乘、除和取余运算符:,+,、,-,、,*,、,/,、,%,除号,/,-,当两个整型数相除时,结果为整数(商的整数部分),-,当被除数和除数只要有一个是实型数时,结果为实数的商。,取余号,%,只能对整型数运算。,比如取整数的个位数:,53%10,是,3,取整数的十位数,1253/10%10,是,5,2.,自增、自减运算符:,+,、,-,用法,-,前置运算,:,+,或,-,用在变量之前,先将变量的值增,1,或减,1,,再将该变量的新值用于表达式中,-,后置运算,:,+,或,-,用在变量之后,先将变量的值用于表达式中,再将该变量的值增,1,或减,1,例:,i=5+j-;i=5+-j;,该运算符,只能用于变量,不能用于常量和表达式,合法:,i+;-j;i=(j+)*5;,非法:,6-;i=(j*5)+;,例,1,:,main(),int,a=5,c;,c=,+a;,/*a,先增,1,,再运算*,/,c=c+a+;,/*a,先运算,再增,1*/,printf,(a=%d,tc,=%dn,a,c);,结果,:,a=7 c=12,*,例,2,:执行下列语句后,输出结果是什么,?,main(),int,a=10,b=20,c;,c=+a+b-;,printf,(a=%d,b=%d,c=%d,a,b,c);,结果,:,a=11,b=19,c=31,算术表达式,是用算术运算符和括号将运算对象(常量、变量和函数等)连接起来的、符合,C,语法规则的式子,如:,x+,a+b,a%b,n/100%10,4.2,赋值运算符与赋值表达式,1.,基本赋值运算符:,=,由“,=”,连接的式子称为赋值表达式。其一般形式为:,变量,=,表达式,功能是:计算右边表达式的值再赋予左边的,变量。,例如:,a=3,b=i+-j,c=sin(x)+sin(y),赋值运算符具有右结合性。,a=b=c=1,可理解为:,a=(b=(c=1),2.,复合赋值运算符:,+=,、,-=,、,*,=,、,/=,、,%=,(,算术运算,),&=,、,|=,、,=,、,=,、,=,(,位运算,),复合赋值符是在赋值符“,=”,之前加上其它二目运算符可构成,执行顺序是:先运算,再赋值。,复合赋值表达式的一般形式为:,变量 双目运算符,=,表达式,等价于:,变量,=,变量 双目运算符 表达式,例如,:,a+=5,等价,于,a=a+5,x%=8,等价于,x=x%8,n&=m,等价于,n=n&m,x*=y+7,等价于,x=x*,(,y+7,),x =n+1,等价于,x=x,、,=,、,、,b,的值为,0,,,而 关系表达式,a b,的值为,1,。,这里的,0,和,1,是逻辑值,,它可以作为判断的条件,,也可以和其它的关系表达式做逻辑运算(与、或、非等),也可以和其它的算术表达式做算术运算,运用关系表达式时的注意事项,1,关系表达式中字符型数据按其,ASCII,码值参加比较运算,100 30,值为,1,2,运算符两边的表达式可以是算术、字符、赋值、关系、或逻辑表达式。,例:(,a+x,)(,b+y,),(x=4)=y+,3,关系运算符运算时结合方向,自左至右,。,例:若,a=4,b=3,c=2,则,x=(abbc)y,的值为,0,。,4.4,逻辑运算符和逻辑表达式,逻辑运算符,用于对逻辑量进行运算,有,3,种:,&,逻辑与:,操作数全真时结果才真否则为假,|,逻辑或:,操作数全假时结果为假真否则为真,!,逻辑非:,操作数取反,逻辑表达式,是用逻辑运算符联系起来的表达式。如:,a,逻辑运算符两边的,操作数,认为是逻辑值。非,0,为真,,0,为假。,逻辑表达式的,结果,也是逻辑值。真为,1,,假为,0,。,运用逻辑表达式的注意事项,判断数值是否为真时,非,0,代表真,,0,代表假,逻辑运算符两侧的操作数不仅可以是整数,也可以是其他数据类型,只要该类型的数据值最终能得到,0,或非,0,值,逻辑表达式中,不一定对逻辑运算符两侧的表达式都求值,(&,、,|),数学上的数值区间不能直接用,在,C,语言的判断条件上,如,:,数学上的,1x10,,,不应写成:,1x=10,;,而应写成:,(1x)&(x=10),例,1,:,int,x,y,z,w;,x=y=z=-1;,w=(+x|+y),printf,(%d,%d,%d,%dn,x,y,z,w);,输出是什么?,注:,&,前的操作数值若是假,则后面的表达式无需运算,|,前的操作数值若是真,则后面的表达式无需运算,0,0,-1,0,4.5,条件运算符和条件表达式,条件运算符(三目运算符),?:,条件表达式的一般形式:,表达式,1,?,表达式,2,:,表达式,3,条件表达式求值过程:,注:三个表达式的类型可以不同;表达式,1,要能得到逻辑值;整个表达式值类型取表达式,2,和表达式,3,中较高的类型,表达式,1,取,表达式,2,值,取,表达式,3,值,T,F,例,1,:执行下列程序段后,变量,a,b,c,的值和,x,y,的值分别是什么,?,int,x=10,y=9;,int,a,b,c;,a=(-x=y+)?-x:+y;,b=x+;,c=y;,8,8,10 9,10,*,例,2,:请写出下列程序的运行结果,main(),int,x=5,y=6;,printf,(,%dn,(,(+x,=y+)|(x=8),),?-x:-y,),;,printf(,%d,%d,x,y);,结果:,5,5,7,4.6,逗号运算符和逗号表达式,又称顺序运算符,用于把若干表达式组合成一个表达式,称之为,逗号表达式,或,顺序表达式,。,如:,3+5,7+9,逗号表达式的一般形式:,表达式,1,表达式,2,表达式,n,表示由左到右依次计算各表达式之值,逗号表达式之值为,表达式,n,之值,。,如:,a=3*5,a*6,之值为,90,4.7,指针运算符,*,取址运算符,&,:取出内存单元的地址,例:,p=,表示变量,i,的地址赋给指针变量,p,,,即指针,p,指向了变量,i,取内容运算符,*,:取出指针所指向的变量的内容,例:,y=*p;,表示指针,p,指向的变量值赋给变量,y,*p=x;,表示变量,x,的值赋给指针所指向的变量,指针运算符示例,main(),int,a=10,b=8,c,d,*p1,*p2;,p1=,c=*p1+*p2;,d=*p1-*p2;,printf,(a+b=%d n,c);,printf,(a-b=%d n,d);,详细的用法见指针一章,4.8,sizeof,运算符,功能:用于计算被运算对象所占字节数,使用格式:,sizeof,(,数据类型,),或,sizeof,(,表达式,),例如:,sizeof(double,),值为,8,sizeof(char,),值为,1,float f;,int,i,a10;,i=,sizeof(f,);i,的值将为,4,i=,sizeof(a,);i,的值将为,20,4.9,不同数据类型之间的转换,不同数据类型的常量、变量混合运算时,要先转换成同一类型后进行运算。转换方法有两种:,1.,自动转换,表达式运算时的转换规则,:,long double,高,double float,unsigned long,int,long,int,unsigned,int,int,char,short,int,低,例:,10+a+i *f -d /e,int,char float float double long,int,int,float,float,double,double,赋值号两边的数据类型不同时的转换规则:,赋值号右边的类型转换成左边的类型。当右边的数据类型比左边长时,右边的数据被截取所需的长度。见,示例,2.,强制转换,形式:,(,类型名,),操作数,其中,操作数,可以是常量、变量或表达式。,例:,float x;,(,int,)4.5/3,值为,1,(,int)x,取变量,x,的整数部分,x-(int)x,取变量,x,的小数部分,自动类型转换示例,main(),char c;,int,i;,i=11361;/*0 x2c61*/,c=i;/*0010110001100001*/,printf(,%c,%d%x,c,c,c);,运行结果:,a 97 61,4.10,运算符的优先级和结合性,优先级,:操作数两边有两个运算符,首先参加优先级高的运算符一侧的运算。,(,附录,),结合性,:操作数两侧的运算符优先级相同时,,,C,规定了各种运算符的结合方向,即“,自左至右,”或“,自右至左,”。,(,附录,),即:运算符的结合性是规定连续几个相同优先级的运算符的计算顺序。,结合性为从左到右时,计算就从左到右逐个进行;,结合性为从右到左时,计算就从右到左逐个进行。,例,1,:,y=2+3-4*5+6,5 -20,-15 +6,-9,例,2,:,表达式,a+b+c,等价于,(a+b)+c,(,左到右),表达式,a=b=c,等价于,a=(b=c),(,右到左),表达式,*,p+,等价于 *,(p+),(,右到左),表达式*,+p,等价于*,(+p),(,右到左),表达式,+*p,等价于,+(*p),(,右到左),练习:如何用,C,语言写表达式,逻辑或关系表达式,判断某一年是否是闰年,整数,x,大于,y,且小于等于,z,一个整数是偶数但不能被,3,整除,写表达式表示一个字符是一个数字,写表达式表示一个字符是一个字母,数学表达式,写一个表达式使得一个小数,x,四舍五入,写一个表达式使得一个小数,x,在小数点后第三位四舍五入,分别写表达式描述一个整数,n,的个位数、十位数。,写出下面的代数式表达式,表达式:用运算符将运算对象连接起来得式子,表达式语句:表达式以分号结束称为表达式语句,5,输入输出函数,在语言中,所有的数据输入输出都是由库函数完成的。,使用语言库函数时,要用预编译命令,#include,将有关,“,头文件,”,包括到源文件中。,使用,标准输入输出库函数时要用到,stdio.h,文件,因此源文件开头应有以下预编译命令:,#include,或,#,includestdio.h,对于下面介绍,的,printf,和,scanf,函数,考虑到其使用频繁,系统允许在使用这两个函数时可不加上述,预编译命令,5.1,格式,输入和输出函数,1.,格式输出函数,printf,(),功能:向显示器输出信息,使用形式:,printf,(,输出格式,输出表列,);,输出格式可由三部分组成:,格式说明,、,按原样输出的字符,、转义字符,输出表列是需要输出的一些数据,可以是表达式,例:,int,a=123;,printf,(,a=,%d,n,a);,有多个输出数据,则:,-,输出表列中各输出间用逗号分隔,-,格式说明与输出数据的个数相同且一一对应,注意左右对齐符号,如:,int,i=-5;,float j=98;,printf,(i=%d,j=%,-10.2,f,n,I,j);,printf,(i=%d,j=%,10.2,f,n,I,j);,输出为,:,i,=-5,j=98.00,i,=-5,j=,98.00,例,1,:,main(),int,a=345,b=-1;,float v=3.1.415;,float u=,3.1416,;,printf,(a=%d,%x,%o n,a,a,a);,printf,(b=%u n,b);,printf(“%.3f,%6.3f,%-6.3f”,v,v,v,v);,printf(“%f,%.3f,%6.3f,%-6.3f”,u,u,u,u);,结果为:,a=345,159,531,b=65535,3.14,1,3.14,1,3.14,1,3.141600,3.142,3.14,2,3.14,2,/*,进位问题*,/,例,2,:,main(),printf,(%3s,%7.2s,%.4s,%-5.3sn,CHINA,CHINA,CHINA,CHINA);,结果为:,CHINA,CH,CHIN,CHI,说明:,当指定的输出宽度小于输出值本身宽度时,则指定的输出宽度不起作用,比如上面,%3s,的格式规定,但仍然输出字符串,CHINA,2.,格式,输入函数,scanf,(),功能:从键盘接受输入信息,使用形式:,scanf(,输入格式,,,地址表列,);,输入格式,可由二部分组成:,格式说明,、,按原样输入的字符,格式说明,和输出函数中的输出格式相似,。,地址表列由需输入的变量的地址,,或字符串首,地址列表组成。,如:,int,i;,scanf,(%d,&i,);,运行时输入:,14,有多个数据输入,则:,写语句时:,-,地址表列中各输入变量间用,逗号,分隔,-,格式说明与输入变量的个数相同且一一对应,-,执行输入语句需要输入数据时:,数据之间,以一个或多个空格分隔,比,如,:,int,i,j;,scanf,(,%d%d,&,i,&j,);,运行时输入:,3,4,当双引号中有按原样输入的字符,,输入时应按原,样键入。,如:,scanf,(,a=%d,b=%d,运行时输入:,a=,3,b=,4,用,%c,格式输入字符,则,空格和转义字符都作为有效,字符输入,如,:,scanf,(,%c%c%c,运行时应输入:,abc,不应输入:,a,b,c,(,a,赋给,c1,,,赋给,c2,,,b,赋给,c3,),输入实数时,不能规定,精度,。,如,:,scanf,(“%7,.2,f”,不允许。,下面情形之一发生时,scanf,语句对,当前变量,的读操作结束,1,遇到空格,回车或制表键,2,宽度限制,3,不合法不匹配的输入,不合法不匹配的输入将导致不正确的结果,例,1,:假设输入,12345,abc,写出下面程序的运行结果,main(),int,a;,char,ch,;,scanf(“%3d%3c”,&,a,&ch,);,printf(“%d,%c”,a,ch,);,?,例,2,:有如下语句,scanf(“%d%c%f”,&a,&b,&c,);,若输入,2223a123o.12,那么,a,b,c,的值分别是什么,?,若输入,a2223asdf34,那,a,b,c,的值又分别是什么,?,123,4,2223,a,123.000123,5.2,字符输入输出函数,1.,字符输出函数,putchar,(),常用形式,:,putchar,(c),c,可以是字符型和整型量,包括转义字符。,功能:向终端(显示器)输出一个字符。,如:,#include,stdio.h,main(),char a;,a=b;,putchar(65);,putchar(n,);,putchar(a,);,结果,:,A,b,2.,字符输入函数,getchar,(),常用形式:,getchar,(),功能:,从终端,(,或系统隐含指定的输入设备,),输入一个字符,例:从键盘输入一个小写字母,转换为大写字母输出。,main(),char c;,printf(Enter,character:);,c=,getchar,();,putchar(c-32);,补:,位运算符,(,第十章,),输出格式说明,1.,输出格式说明由,%,后跟一个,格式字符,组成:,%,d,以十进制整数的实际长度输出,%,f,以十进制实数形式输出,小数部分,6,位,%,c,输出单一字符,%,s,输出字符串,%,%,输出一个百分号,%,x,以十六进制无符号形式输出整数,%,o,以八进制无符号形式输出整数,%,u,以十进制无符号形式输出整数,%,e,以指数形式输出实数,%,g,选用,%f,和,%e,中输出宽度较短的一种格式,2.,输出格式选择项,+,结果右对齐,-,结果左对齐,0,用于输出数值,不用位置填,0 (,缺省填空格,),m,指定输出宽度(列数),.n,对实数,表示输出,n,位小数,对字符串,表示从左端截取的字符个数,l,用于输出长整型、双精度型,L,用,于输出长双精度型,输入格式说明,1.,输入格式说明由,%,后跟一个,格式字符,组成:,%,d,用于输入十进制整数,%,x,用于输入十六进制整数,%,o,用于输入八进制整数,%,c,用于输入单个字符,%,s,用于输入字符串,以非空白字符开始,空白字符结束,%,f,用于输入实数,可用小数或指数形式,2.,输入格式选择项,l,用于输入双精度型、长整型,L,用于输入长双精度型,m,指定输入数据所占宽度(列数),*,指定输入项在读入后不赋给相应的变量,课后复习关键字,常量(整型,实型,字符型,字符串),变量,变量定义关键词,:,int,long,float,char,double,运算符,重点:,算术,逻辑,关系,条件,输入输出函数,printf(),scanf,(),putchar(),getchar,(),
展开阅读全文

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

客服