C语言数据类型与基本操作.ppt

上传人:tia****nde 文档编号:12805510 上传时间:2020-05-25 格式:PPT 页数:45 大小:842.50KB
返回 下载 相关 举报
C语言数据类型与基本操作.ppt_第1页
第1页 / 共45页
C语言数据类型与基本操作.ppt_第2页
第2页 / 共45页
C语言数据类型与基本操作.ppt_第3页
第3页 / 共45页
点击查看更多>>
资源描述
1,常量和变量标识符与关键字整型数在计算机中的存储方式有符号的数据类型和无符号的数据类型运算符及表达式不同类型数据间的转换,第二章C语言数据类型与基本操作,2,数据类型,数据类型决定:1.数据占内存字节数2.数据取值范围3.其上可进行的操作,3,基本类型,类型,关键字,取值范围,位数,说明:数据类型所占位数随机器硬件不同而不同,上表以微机为例:,longdouble801e-49311e4932,字符型,浮点型,整型,4,整型常量十进制:例15,19,123,-345,0八进制:以0(零)开头的整数,例0123,011十六进制:以0 x或0X开头的整数,例0 x123,0Xff,注:用l或L表示一个数是长整型,例123L;无符号数用u或U表示,无符号长整型用ul或UL表示,例:123u,0 xful,问题:0123=()100 x123=()100Xff=()10,例12与12L,例30000为int型65536为longint型,2.1常量与变量,5,实型常量格式:(必须有小数点)例0.123,.123,123.0,0.0,123.指数格式:(必须有数字在e或E的前面;指数必须是整型)例:12.3e3,123E2,1.23e4,e-5,1.2E-3.5,注:用f或F注明是单精度,用l或L注明是长双精度,没有注明则是双精度.,6,字符常量和转义字符用单撇号括起来的一个字符;,一个字符的值可用ASC数值表示;,如101-A012-n376-x61-a60-0483-(),例:A-101-x41-65,例符号常量举例(ch2_1.c)#definePRICE30main()intnum,total;num=10;total=num*PRICE;printf(total=%d,total);,运行结果:total=300,9,变量变量及赋值定义变量:数据类型var1,var2,varn;,一个变量可以边定义边赋值;,例:inta,b,c;floatdata;,变量类型决定变量所占存储空间大小,变量名,例:inta=2,b,c=4;floatdata=3.67;charch=A;intx=1,y=1,z=1;intx=y=z=1;,所有变量必须先定义后使用。.,例1intstudent;stadent=19;/Undefinedsymbolstatentinfunctionmain,例2floata,b,c;c=a%b;/illegaluseoffloatingpointinfunctionmain,一般在函数开始部分定义.,10,整型变量占2字节bytes;shortintlongsizeof(type)求字节数,实型变量单精度:占4bytes,7位有效数值双精度:占8bytes,1516位有效数值,字符变量以ASC字符集中的数值保存在内存中;字符可以当作一般整型数来处理.,例floata;a=111111.111;/*a=111111.1*/doubleb;b=111111.111;/*b=111111.111*/,例a=D;/*a=68;*/x=A+5;/*x=65+5;*/s=!+G/*s=33+71;*/,C程序中没有字符串变量,11,例#definePRICE12.5main()intnum=3;floattotal;charch1,ch2=D;total=num*PRICE;ch1=ch2-A+a;printf(total=%f,ch1=%cn,total,ch1);,运行结果:total=37.500000,ch1=d,12,2.2标识符和关键字,-标识符一个标识符可由字母、数字和下划线组成;必须用字母或下划线开头;大小写要区分;不能用保留关键字作变量名;避免混淆的字母;例如:l与I,o与0.,例:判断下列标识符号合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3charab_above$123,13,32个关键字:(由系统定义,不能重作其它定义)autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile,-关键字,14,2.3整型数在计算机中的存储方式,1.二进制位与字节计算机系统的内存储器,是由许多称为字节的单元组成的,1个字节由8个二进制位(bit)构成,每位的取值为0/1。最右端的那1位称为“最低位”,编号为0;最左端的那1位称为“最高位”,而且从最低位到最高位顺序,依次编号。图11-1是1个字节各二进制位的编号。图11-11个字节各二进制位的编号2.数值的原码表示数值的原码表示是指,将最高位用作符号位(0表示正数,1表示负数),其余各位代表数值本身的绝对值(以二进制形式表示)的表示形式。为简化描述起见,本节约定用1个字节表示1个整数。,15,2.3整型数在计算机中的存储方式,例如,+9的原码是00001001符号位上的0表示正数-9的原码是10001001。符号位上的1表示负数3.数值的反码表示数值的反码表示分两种情况:(1)正数的反码:与原码相同。例如,+9的反码是00001001。(2)负数的反码:符号位为1,其余各位为该数绝对值的原码按位取反(1变0、0变1)。例如,-9的反码:因为是负数,则符号位为“1”;其余7位为-9的绝对值+9的原码0001001按位取反为1110110,所以-9的反码是11110110。,16,2.3整型数在计算机中的存储方式,4.数值的补码表示数值的补码表示也分两种情况:(1)正数的补码:与原码相同。例如,+9的补码是00001001。(2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。例如,-9的补码:因为是负数,则符号位为“1”;其余7位为-9的绝对值+9的原码0001001按位取反为1110110;再加1,所以-9的补码是11110111。已知一个数的补码,求原码的操作分两种情况:(1)如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。(2)如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位不变,其余各位取反,然后再整个数加1。,17,2.3整型数在计算机中的存储方式,例如,已知一个补码为11111001,则原码是10000111(-7):因为符号位为“1”,表示是一个负数,所以该位不变,仍为“1”;其余7位1111001取反后为0000110;再加1,所以是10000111。5.数值在计算机中的表示补码在计算机系统中,数值一律用补码表示(存储),原因在于:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。,18,2.4有符号的数据类型和无符号的数据类型,表2.3基本数据归纳,19,2.5运算符及表达式,算术运算符:+-*/%+-关系运算符:=!=逻辑运算符:!d=func();c=d+2;,21,算术运算符及表达式运算符:+-*/%(取余)+(自增)-(自减)运算规律:从左至右优先级:%-*/-+-(1)(2)(3)注:两个整数/是整型;两个整数%是整型.,例5/2=-5/2=,例5%2=-5%2=1%10=5%1=5.5%2,例5/2=2-5/2=-2(向零取整),例5%2=1-5%2=-11%10=15%1=05.5%2(),22,自增、自减运算符+-自增、自减在变量前面:+i,-i(在表达式中,先自加(自减)后用其值)在变量后面:i+,i-(在表达式中,先用其值再自加(自减)),例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,/4,/3,/c=20,a=4,/c=15,a=4,23,注意:只针对变量,而不针对常量和表达式;不要产生二义性;运算规律是自右至左。如8+(x*y)+,j=-(+k);k=4j=-4,j=-(k+);k=4j=-3,例k=3;j=-+k;j=-k+;,解决办法避免在同一表达式中的同一变量的自加自减.,例:i=3;y=(i+)+(i+),y=6i=5y=3+3;i+;i+;y=7i=5y=3+4;i+;,24,2.不使用连续运算符,用括弧分隔。,例1:i=3;j=1;x=i+j;,例3:i=3;printf(%d,%d,i,i+);,x=i+(+j);x=5i=3j=2x=(i+)+j;x=4i=4j=1,例2:i=3;j=1;x=i-+j;,等价于x=i-(+j);x=1i=3j=2,可能输出:3,34,3,3.在函数调用时,实参的求值顺序C无统一规定.,25,注:运算顺序:右-to-左操作符左边只能是变量,不能是常量和表达式,高到低转换数据有可能丢失,例3=x-2*y;a+b=3;,例floatf;inti;i=10;f=i;则f=10.0,例inti;i=2.56;/结果i=2;,例:a=b=c=5a=(b=5)a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2),/表达式值为5,a,b,c值为5,/b=5;a=5,/表达式值11,c=6,a=11,/表达式值10,a=10,b=4,c=6,/表达式值5,a=5,b=10,c=2,类型不一致,数值型和字符型会自动转换。,例:a=12;a+=a-=a*a,例:inta=2;a%=4-1;a+=a*=a-=a*=3;,/a=-264等价于a=a+(a=a-(a*a),/a=0等价于a=a+(a=a*(a=a-(a=a*3),26,长度测试运算符sizeof,长度测试运算符sizeof可用来测试某个类型的变量所占用计算机内存空间的字节长度。格式为:sizeof(类型名),例:main()printf(char:%dbytesn,sizeof(char);printf(short:%dbytesn,sizeof(short);printf(int:%dbytesn,sizeof(int);printf(long:%dbytesn,sizeof(long);printf(float:%dbytesn,sizeof(float);printf(double:%dbytesn,sizeof(double);,27,关系运算及关系表达式=!=运算顺序:左-to-右优先级:,例ca+b/c(a+b)ab!=c/(ab)!=ca=bc/a=(bc),关系表达式的值为一个逻辑值,用1代表“真”,用0代表“假”。非零数也表示“真”。,例inta=3,b=2,c=1,d,f;ab(ab)=cb+cbf=abc,/表达式值1,/表达式值1,/表达式值0,/d=1,/f=0,28,注意:,例若a=0;b=0.5;x=0.3;则a78在C中是允许的,值为,0,例inti=1,j=7,a;a=i+(j%4!=0);则a=,2,例a0结果为A100结果为,1,0,29,注意:,例注意区分“=”与“=”inta=0,b=1;if(a=b)printf(aequaltob);elseprintf(anotequaltob);,例应避免对实数作相等或不等的判断如1.0/3.0*3.0=1.0结果为可改写为:fabs(1.0/3.0*3.0-1.0)=0)?x:-x(c=ax0,表达式值为axy?1:1.5/xy,值为1.0;xy,值为1.5,条件运算符及条件表达式表达式1?表达式2:表达式3像if语句的简化,34,条件运算符及条件表达式,例:从键盘读入一个整数赋给x,如果x大于等于0,把x的平方赋给y,否则把x的2倍赋给y。#includestdio.hvoidmain()intx,y;scanf(%d,分析下列程序的输出结果。#includestdio.hvoidmain()inti,j,k,a=3,b=2;i=(-a=b+)?-a:+b;j=a+;k=+b;printf(i=%d,j=%d,k=%dn,i,j,k);,请编制程序,任意输入两个整数,输出其中较小者。main()intn1,n2,main;clrscr();printf(inputtwonumber(n1,n2):);scanf(%d,%d,编制程序,输入大写字母,则输出小写字母;输入小写字母,则输出大写字母。main()charch;printf(inputanyletter:);scanf(%c,35,逗号运算符和逗号表达式表达式1,表达式2,表达式n运算顺序:左-to-右逗号表达式的值是表达式n的值不是所有的逗号都是逗号表达式,例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,例:/*ch2_6.c*/#includemain()intx,y=7;floatz=4;x=(y=y+6,y/z);printf(x=%dn,x);,运行结果:x=3,36,位运算,位运算符,1按位与inti;x=3.6;i=(int)x;printf(x=%f,i=%d,x,i);结果:x=3.600000,i=3,思考,43,本章小结1、基本数据类型的种类、取值范围、在内存中占用字节数;2、常量的表示方法;3、标示符的命名规则,变量的赋值、存放数据的实质;4、数据类型的转换规律;5、字符与字符串的区别;6、运算符及表达式:符号、结合规律、优先级、取值;7、逻辑运算符及逻辑值的表示;8、逗号表达式及取值。,44,练习题1、设intx=1,y=1;表达式(!x|y-)的值是()A.0B.1C.2D.-12、以下选项中合法的用户标识符是()A.longB._2testC.3dmaxD.a.dat3、若x=3.5,y=2.5,a=2,b=3,则(float)(a+b)/2+(int)x%(int)y=()A.3.5B.2.6C.3D.2.14、假设x和y为double型,则表达式x=2,y=x+3/2的值是()A.3.500000B.3C.2.000000D.3.0000005、已知a大于b及a小于等于c,则可以表示为()A.b=a6、c语言中合法的常量为()A.e-3B.1.2e+02C.039D.xab7、intI=0;执行语句while(I+5);后,I的值是()A.5B.6C.7D.48、表达式:10!9的值是()A.trueB.0C.1D.非零值9、判断题:a和“a”在内存中所占字节相同。()c语言没有逻辑值。(),45,练习题参考答案1、设intx=1,y=1;表达式(!x|y-)的值是(B)A.0B.1C.2D.-12、以下选项中合法的用户标识符是(B)A.longB._2testC.3dmaxD.a.dat3、若x=3.5,y=2.5,a=2,b=3,则(float)(a+b)/2+(int)x%(int)y=(a)A.3.5B.2.6C.3D.2.14、假设x和y为double型,则表达式x=2,y=x+3/2的值是(D)A.3.500000B.3C.2.000000D.3.0000005、已知大于b及a小于等于c,则可以表示为(D)A.b=a6、c语言中合法的常量为(b)A.e-3B.1.2e+02C.039D.xab7、intI=0;执行语句while(I+5);后,I的值是(B)A.5B.6C.7D.48、表达式:10!9的值是(C)A.trueB.0C.1D.非零值9、判断题:a和“a”在内存中所占字节相同。()c语言没有逻辑值。(),
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!