基本数据类型与运算.ppt_第1页
基本数据类型与运算.ppt_第2页
基本数据类型与运算.ppt_第3页
基本数据类型与运算.ppt_第4页
基本数据类型与运算.ppt_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计,第二章基本数据类型与运算,第二章基本数据类型与运算,C的基本数据类型,常量,变量,运算符及表达式,为什么讨论这些知识?,通常程序要对数据进行操作处理:处理的对象是数据通过运算符和表达式进行操作,例如:已知圆半径为5cm,计算圆的面积。,#includemain()intr;floatarea;r=5;area=3.14*r*r;printf(%fn,area);,运算结果是输出圆的面积:78.500000,程序中用到的数据:r、area、5、3.14对数据进行的运算:*、=,分析:,计算机操作处理时,要完成以下工作:在内存中给半径r和运算结果area开辟存储空间,存放它们的值。应该留多大的地方来存放它们的值?数据5、3.14与r、area不同,它们是在编写程序时就给出确定的值,在运算过程中不会改变。这样的数计算机怎么处理?对整数5和小数3.14,计算机存放时是否有区别?,涉及数据类型的基本知识,数据:计算机程序加工处理的对象数据类型:具有相同性质的数据对象的集合,2.2C的基本数据类型,C的数据类型,短整型short,数据类型决定:1.数据占内存字节数2.数据取值范围3.其上可进行的操作,2.2-1整型数据,注意:数据类型所占字节数随机器硬件和编译器的不同而不同,上表以16位机为例。,整型数据输入输出举例,#includemain()inta,b,sum;printf(Pleaseinputtwointegers:);scanf(%d%d,输入:510输出:Thesumof5and10is15.,整型数据输入输出举例,#includemain()unsignedintm;m=65535;printf(m=%dn,m);printf(m=%un,m);,输出结果为:m=-1m=65535,按有符号数输出,按无符号数输出,整型数据输入输出举例,#includemain()inta;printf(pleaseinput:);scanf(%d,运行结果:pleaseinput:1234a=1234,Why?!,运行结果:pleaseinput:123456a=-7616,整型数据输入输出举例,运行结果:pleaseinput:1234a=1234,运行结果:pleaseinput:123456a=-7616,整型数据输入输出举例,有趣的结果:,可用下图表示:,2.1-2实型数据(浮点型),注意:数据类型所占字节数随机器硬件和编译器的不同而不同,上表以16位机为例。,实型数据输入输出举例,#includemain()floata,b,sum;printf(“Pleaseinputtwodecimals:”);scanf(“%f%f”,输入:1.510.6输出:Thesumof1.5and10.6is12.1.,2.1-3字符类型,注意:不同的编译器处理有所不同,此处以TurboC为例。,字符数据输入输出举例,#includemain()chara,b;printf(Pleaseinputachar:);scanf(%c,输入:a输出:TheASCIIvalueofcharais97.TheASCIIvalueofcharAis65.,字符数据输入输出举例,计算机中的存储:-9:1111111111110111-10:1111111111110110,247,246,#includestdio.hmain()chara,b;a=-9;b=-10;/*signedchartype*/printf(%c%c,a,b);,输出:,字符数据输入输出举例,#includemain()charc1,c2;c1=97;c2=98;printf(%c,%cn,c1,c2);,运行结果:a,b,#includemain()charc1,c2;c1=97;c2=98;printf(%d,%dn,c1,c2);,运行结果:97,98,思考如果将例中char改成int,结果如何?如果将c1=97改为c1=97+3,结果如何?如果将c2=98改为c1=98-32,结果如何?,字符数据输入输出举例,#includemain()charc1,c2;c1=97;c2=98;printf(%d,%dn,c1,c2);printf(%c,%cn,c1,c2);,运行结果:97,98a,b,思考如果将例中char改成int,结果如何?如果将c1=97改为c1=97+3,结果如何?如果将c2=98改为c2=98-32,结果如何?,int,c1=97+3;,c2=98-32;,运行结果:100,98d,b,运行结果:100,66d,B,原始运行结果:97,98a,b,2.2变量(variable),数据类型变量名;,概念:在程序运行过程中其值可以改变的量。变量名:必须使用合法的标识符作变量名不能使用关键字为变量命名三个要素:变量类型、变量名和变量值。内涵:变量名实际代表存储空间地址的一个符号。编写程序时通过变量名来存、取变量值。定义格式:,决定分配字节数和数的表示范围,合法标识符,2.2变量,例如:inta,b=5;charc;floats;,例如:inta=1,b=-3,c;,inta=1,b=-3,c;,1,-3,?,a,b,c,编译程序根据变量定义为其分配指定字节的内存单元,随机值,2.2变量,定义位置:置于函数的开头,而且必须位于所有的执行语句之前。使用方法:必须先定义,再使用。变量初始化:允许在定义变量的时对变量赋初值。表示定义变量并对变量存储单元赋值。,2.2变量,main()inta,b=2;a=1;floatdata;data=(a+b)*1.2;printf(“data=%fn”,data);,error:syntaxerror:missing;beforetypeerror:data:undeclaredidentifier,*标识符的命名规则*,标识符(identifier)是用来标识变量、常量、函数等的字符序列。命名规则:只能由字母、数字、下划线组成,且开头必须是字母或下划线。大小写敏感。不能使用关键字。命名原则:见名知意。,2.3常量(constant),1、常量在程序运行过程中,其值不能改变的量称为常量。常量可分为:符号常量:用标识符(identifier)代表常量。定义格式为:标识符一般用大写字母是宏定义预处理命令,不是C语句直接常量:即具体的常数,如5,-4.6,a等。,整型常量实型常量,字符常量字符串常量,#definePI3.1416,2.3-1符号常量,符号常量:用标识符(identifier)代表常量。标识符一般用大写字母是宏定义预处理命令,不是C语句,#include#definePI3.14main()intr=2;floats,l;l=2*PI*r;s=PI*r*r;printf(l=%f,s=%fn,l,s);,运行结果:l=12.560000,s=12.560000,编译前系统进行替换,2.3-1符号常量,#include#definePI3.14main()intr=2;floats,l;l=2*PI*r;s=PI*r*r;printf(l=%f,s=%fn,l,s);,一般用大写字母是宏定义预处理命令,不是C语句(没有“;”)编译时先由系统替换为它所代表的常量,再进行编译虽然是用标识符来表示标识,但本质是常量,具有常量值不能改变的性质,2.3-2整型常量,2.3-2整型常量,#includemain()inta,b,c;a=123;b=0123;c=0 x123;printf(a=%d,b=%d,c=%dn,a,b,c);,运行结果:a=123,b=83,c=291,2.3-2整型常量,例30000为int型65536为longint型,整型常量的类型根据其值所在范围确定其数据类型在整常量后加字母l或L,认为它是longint型常量,长整型示例:129L/129ul/0X1FFLU。,2.3-3实型常量,实型常量的类型默认double型在实型常量后加字母f或F,认为它是float型例如:3.5f、1e2F,例如:e-5,1.2E-3.5,1e,2.3-4字符及字符串常量(ASCII),2.3-4转义字符及其含义,000377,x00xFF,main()printf(101x42Cn);printf(Isay:Howareyou?n);printf(CProgramn);printf(TurboCn);,输出:ABCIsay:”Howareyou?”CProgramTurboC,main()printf(Yb=n);,2.3-4转义字符举例,输出:屏幕显示:=打印机输出:,main()inta,b,c;a=1;b=2;c=3;printf(t%dn%d%dn%d%dtb%dn,a,b,c,a,b,c);,输出:123456789012345123123,2.3-4转义字符举例,什么时候要使用转义字符?,注意:使用转义字符时,后的八进制或十六进制数不应大于char类型所允许的范围,C程序中需要实现以下情况时:实现某些特写打印或显示动作时打印或显示以下三个字符时(斜杠)(双引号)(单引号)打印或显示ASCII表中非键盘字符时,printf(123t56an);,printf(ThedirectoryisE:Turbocn);,printf(Look16andx15n);,什么时候要使用转义字符?,#includemain()printf(123t56an);printf(ThedirectoryofTC.exeisE:Turbocn);printf(Look16andx15n);,运行结果:12356ThedirectoryofTC.exeisE:TurbocLookand,2.3-4字符串常量,定义:用双引号(“”)括起来的字符序列长度:所包含的字符个数存储方式:每个字符串尾系统自动加一个0作为字符串结束标志,不必输入且并不输出。,字符常量与字符串常量不同,例:字符串hello在内存中,例:空串在内存中,例:charch;ch=A;,例:charch;ch=A;,例:字符常量a,例:字符串常量a,字符数据输入输出举例,#includemain()charc1=a,c2;c2=98;printf(%d,%dn,c1,c2);printf(%c,%cn,c1,c2);,运行结果:97,98a,b,#includemain()charc1=a,c2;c2=98;printf(%d,%dn,c1,c2);printf(%c,%cn,c1,c2);,VC下运行结果:44,98,b,warninginitializing:chardiffersinlevelsofindirectionfromchar2,字符数据输入输出举例,#includemain()charc1=a,c2;c2=98;printf(%d,%dn,c1,c2);printf(%c,%cn,c1,c2);,VC下运行结果:44,98,b,思考若让c1分别等于U、ABC、A,结果如何?,Turboc下运行结果:-108,98,b,字符数据输入输出举例,#includemain()charc110=zhangsan,c2;c2=98;printf(%sn,c1);printf(%cn,c2);,注意:用char定义的字符变量只能接受字符常量,而不能接受字符串常量(C语言中无字符串变量),运行结果:zhangsanb,2.4运算符与表达式,运算符的学习方法,运算符功能与运算量关系要求运算量个数:单目、双目、三目要求运算量类型运算符优先级别:同一个表达式中不同运算符进行运算时的先后次序结合方向:左结合性与右结合性。当一个运算对象两侧的运算符的优先级别相同,则按规定的结合方向处理。结果的类型,基本概念:表达式与语句,a=3;b=4;,表达式:由变量、常量以及运算符按照语法规则组成的序列。表达式的特点是能够求值。例如:a+b*c%d语句:特点是以;结束,可产生执行代码:1、表达式语句。如:y=x+3;2、空语句。如:;3、函数调用语句。如:printf(“%d”,4、复合语句。如:5、控制语句。如:if、while等,一、算术运算符和算术表达式,#includemain()inta;floatb;a=1/2;b=1.0/2printf(“na=%d,b=%fn”,a,b);,输出:a=0,b=0.500000,注意:两整数相除,结果为整数,一、算术运算符和算术表达式,2、求模运算符号:%结合方向:从左向右说明:%要求两侧均为整型数据,例:5%2=-5%2=1%10=5%1=5.5%2=,1,-1,1,0,(),一、算术运算符和算术表达式,3、自增加、自减少运算符:+-作用:使变量值加1或减1,常用于循环语句中种类:前置,形式如+i,-i,先执行i+1或i-1,再使用i值。后置,形式如i+,i-,先使用i值,再执行i+1或i-1。注意:只能用于变量,不能用于常量和表达式,一、算术运算符和算术表达式,main()inti=3,j=10,m,n,p,q;m=+i;n=i+;p=-j;q=j-;printf(”i=%d,m=%d,n=%dn”,i,m,n);printf(”j=%d,p=%d,q=%dn”,j,p,q);,运行结果为:i=5,m=4,n=4j=8,p=9,q=9,+i;i+;-j;j-;,运行结果为:i=5,m=?,n=?j=8,p=?,q=?,若对某变量自加/自减而不赋值,结果都使该变量自身1;若某变量自加/自减的同时还参加其它运算,则前缀运算是先变化后使用后缀运算是先使用后变化,一、算术运算符和算术表达式,main()inti=3,j=10,m,n,p,q;m=+i-1;n=i+-1;p=-j+1;q=j-1;printf(”i=%d,m=%d,n=%dn”,i,m,n);printf(”j=%d,p=%d,q=%dn”,j,p,q);,运行结果为:i=5,m=3,n=3j=8,p=10,q=8,#includemain()inti=3,j=3,m,n;m=(i+)+(i+)+(i+);n=+j+j+j;printf(”m=%d,n=%d,i=%d,j=%d”,m,n,i,j);,注:该例在不同的系统中,得到结果有所不同,m=3+3+3=9;i=i+1=4;i=i+1=5;i=i+1=6;j=j+1=4;j=j+1=5;j=j+1=6;n=6+6+6=18,例:多个自增、自减运算符的使用。,Tuboc下运行结果:m=9,n=18,i=6,j=6,VC下运行结果:m=9,n=16,i=6,j=6,#includemain()inti=3,m,n;m=+i+(i+)+(+i);i=3;n=+i+(i+)*(+i);printf(i=%d,m=%d,n=%dn,i,m,n);,Tuboc下运行结果:i=6,m=15,n=30,注:该例在不同的系统中,得到结果有所不同,VC下运行结果:i=6,m=13,n=30,例:多个自增、自减运算符的使用。,#includemain()inta=1;printf(a=%d,+a=%d,a-=%d,a,+a,a-);,运行结果为:a=1,+a=1,a-=1,a-;+a;a;printf(a=%d,+a=%d,a-=%d,1,1,1);,/*表达式值为1,a=0*/,/*a=1,表达式值为1*/,/*表达式值为1*/,课堂练习,j=3;k=+j;j=3;k=j+;j=3;printf(“%d”,+j);j=3;printf(“%d”,j+);a=3;b=5;c=(+a)*b;a=3;b=5;c=(a+)*b;,/*k=4,j=4*/,/*k=3,j=4*/,/*j=4,输出4*/,/*j=4,输出3*/,/*c=20,a=4*/,/*c=15,a=4*/,说明:+和-的运算对象只能是变量(或运算结果是变量的表达式),不能是常量(或运算结果是数值的表达式)。例如:5+、(a+2)+不合法。具有右结合性,结合方向为从右到左。例如:a+等价于-(a+)在有+和的表达式中,尽量不要使用难于理解和容易出错的表达方式,尤其是具有二义性的表达式。,inti=3;m=(i+)+(i+)+(i+);,inti=3;a=i+;b=i+c=i+;c=a+b+c;,(),练习:,a=3,b=7;m=(a+)+b+则m=,10,a=3,b=7n=+(a+a+),a=3,b=7;c=a+a+;n=+c;则n=,7,(),(),二、赋值运算符和表达式,1、基本的赋值运算符:=格式:变量=表达式结合方向:从右向左,优先级14级(次最低)作用:将数据(常量或表达式)赋给一个变量注意:左侧必须是变量,不能是常量或表达式转换规则:使赋值号右边表达式值自动转换成其左边变量的类型。赋值号与数学中的等号含义不同.,n=t+210a=(b=(b*c)10),数学中a=b等价于b=aC语言中a=b不等价于b=a,inta;a=7.99999,/a=7,例a=3;d=func();c=d+2;,(),(),二、赋值运算符和表达式,#includemain()inta;a=10;a=a+3;a+3=10;a*3=8;5=5;,error=:leftoperandmustbel-valueerror=:leftoperandmustbel-valueerror=:leftoperandmustbel-value,二、赋值运算符和表达式,例:a=b=c=5;a=(b=5);a=5+(c=6);a=(b=4)+(c=6);a=(b=10)/(c=2);,/表达式值为5,a,b,c值为5,/表达式值为5,b=5;a=5,/表达式值11,c=6,a=11,/表达式值10,a=10,b=4,c=6,/表达式值5,a=5,b=10,c=2,二、赋值运算符和表达式,main()inti=5;floata=35.15,b;doublec=123456789.456123;chard=B;printf(i=%d,a=%f,c=%f,d=%cn,i,a,c,d);b=i;i=a;a=c;d=i;printf(i=%d,a=%f,b=%f,d=%cn,i,a,b,d);,运行结果:i=5,a=35.150002,c=123456789.456123,d=Bi=35,a=123456792.000000,b=5.000000,d=#,二、赋值运算符和表达式,2、复合的赋值运算符:算术运算相关:+=、-=、*=、/=、%=位运算相关:=、,二、赋值运算符和表达式,例,设a=3,则:a+=5;,/表达式值为8,a=8,例:a=12;a+=a-=a*a;等价于:b=a*a144;c=a-b132;a=c;d=a+c=-132132=-264;a=d=-264;,例:inta=2;a%=4-1;等价于:a=a%3=2%3=2;,二、赋值运算符和表达式,main()inta=2,b=3,c=4,d=5,x;a+=b*c;b-=c/b;printf(%d,%d,%d,%dn,a,b,c*=2*(a+c),d%=a);printf(x=%dn,x=a+b+c+d);,运行结果为:14,2,144,5x=165,关系运算符:、=、b(ab)=cb+cbf=abc,/表达式值1,/表达式值1,/表达式值0,/d=1,/f=0,例若a=0;b=0.5;x=0.3;则a78在C中是允许的;,例inti=1,j=7,a;a=i+(j%4!=0);,例a0;A100;A3;,/结果为0,注意区分“=”与“=”,关系运算符注意符号区别,main()inta=0,b=1;if(a=b)printf(aequaltob);elseprintf(anotequaltob);,结果:aequaltob原因:将b的值赋给a,a=1,逻辑运算符种类:b=20;c=30;a=(-bb?a:cd?c:dab?a:(cd?c:d),五、条件运算符和表达式,max=(ab)?a:b;/*求a,b的最大值*/,五.条件运算符和表达式,intm1=5,m2=3;m1m2?(m1=1):(m2=-1);m1=?m2=?,intx=1,y=2,z;z=xy?+x:y+;x=?y=?z=?,1,3,1,3,2,if(ab)max=a;elsemax=b;,六、逗号运算符和表达式,inta,b=5;x=(a=3,6*3);printf(“x=%d”,x=(a=1,y=5);,/表达式值为18,a=3,/输出结果:,/定义整型变量a,b且b初始化为5,/变量x=5,a=1,y=5,x=5,逗号运算符:,格式:表达式1,表达式2,表达式n结合方向:从左向右,优先级最低逗号表达式的值:等于表达式n的值用途:常用于声明变量或for循环语句中,六、逗号运算符和表达式,例a=3*5,a*4a=3*5,a*4,a+5例x=(a=3,6*3)x=a=3,6*a例a=1;b=2;c=3;printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,b,c),b,c);,/a=15,表达式值60,/a=15,表达式值20,/赋值表达式,表达式值18,x=18,/逗号表达式,表达式值18,x=3,/1,2,3,/3,2,3,六、逗号运算符和表达式,#includemain()intx,a;x=(a=3*5,a*4,a+5);printf(“x=%d,a=%dn”,x,a);,#includemain()intx,a;x=(a=3*5,a*4),a+5;printf(“x=%d,a=%dn”,x,a);,运行结果:x=20,a=15,运行结果:x=60,a=15,七、数据类型长度运算符,运算符:sizeof格式:sizeof(类型说明符、数组名或表达式)类型说明符:该类型数据所占字节数数组名:该数组所占字节数表达式:该表达式所占字节数,但并不计算表达式的值,七、数据类型长度运算符,main()floatf=1.5,

温馨提示

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

评论

0/150

提交评论