




已阅读5页,还剩98页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章数据类型、运算符、表达式,第3章数据类型、运算符、表达式,3.1数据在计算机中是怎样存储的3.2整型数据的运算与分析3.3实型数据的运算与分析3.4字符型数据的运算3.5变量赋初值3.6各类数值型数据之间的混合运算3.7算术运算符和算术表达式3.8赋值运算符和赋值表达式3.9逗号运算符和逗号表达式3.10编程的一般规范,3.1数据在计算机中是怎样存储的,3.1.1数据在计算机中是以二进制形式存储的3.1.2位、字节和地址3.1.3常量和变量,计算机内部的信息都是用二进制表示计算机存储器是用半导体集成电路构成的有两种稳定的工作状态:“导”与“截止”,即电脉冲的“有”与“无”分别用“1”和“0”表示,3.1.1数据是以二进制形式存储的,若相邻的8个二极管元件中第1,3,5,7个元件处于“导通”状态,第2,4,6,8个元件处于“截止”状态,用“10101010”表示,导通截止导通截止导通截止导通截止,10101010,3.1.1数据是以二进制形式存储的,3.1.1数据是以二进制形式存储的,3.1.2位、字节和地址,位(bit),又称“比特”。每一个二极管元件称为一个“二进制位”,是存储信息的最小单位。它的值是“1”或“0”字节(byte),又称“拜特”。一般将8个“二进制位”组织成一组,称为“字节”。这是人们最常用的存储单位1字节=8位,地址。计算机的存储器包含许多存储单元,操作系统把所有存储单元以字节为单位编号,3.1.2位、字节和地址,3.1.3常量和变量,常量和变量常量是指在程序运行过程中其值不能改变的量变量是指在程序运行过程中其值可以改变的量,常量包括:1.直接常量(字面常量)整形常量,实型常量,字符常量2.符号常量:用标识符代表一个常量定义形式为:#define标识符常量,3.1.3常量和变量,符号常量的作用,例:求以r为半径的圆周长c和圆面积s,再求以r为半径的圆球体积v。,c=2*3.1415926*r;,s=3.1415926*r*r;,v=4/3*3.1415926*r*r*r;,#includevoidmain()doubler=3.67,c,s,v;c=2*3.1415926*r;s=3.1415926*r*r;v=4/3*3.1415926*r*r*r;printf(“c=%fns=%fnv=%fn”,c,s,v);,c=23.059290s=42.313797v=155.291633,有错,4.0/3.0,#includevoidmain()doubler=3.67,c,s,v;c=2*3.1415926*r;s=3.1415926*r*r;v=4.0/3.0*3.1415926*r*r*r;printf(“c=%fns=%fnv=%fn”,c,s,v);,c=23.059290s=42.313797v=207.055511,pow(r,2),pow(r,3),#include,#include#includevoidmain()doubler=3.67,c,s,v;c=2*3.1415926*r;s=3.1415926*pow(r,2);v=4.0/3.0*3.1415926*pow(r,3);printf(“c=%fns=%fnv=%fn”,c,s,v);,c=23.059290s=42.313797v=207.055511,#definePI3.1415926,PI,PI,PI,#include#includevoidmain()doubler=3.67,c,s,v;c=2*PI*r;s=PI*pow(r,2);v=4.0/3.0*PI*pow(r,3);printf(“c=%fns=%fnv=%fn”,c,s,v);,c=23.059290s=42.313797v=207.055511,#definePI3.1415926,符号常量,符号常量的性质和使用方法,#define不是C语句,行末没有分号#define是一个“预编译命令”符号常量一般用大写,以示与变量区别好处:含义清楚在需要改变一个常量时能做到“一改全改”用符号常量能保护所代表的数据不被破坏,要注意区别变量名和变量值,16,h,2000,存储单元,变量名,变量地址,变量值,变量,要注意区别变量名和变量值,16,h,2000,执行h=37;,37,变量,3.2整型数据的运算与分析,3.2.1整型数据运算程序举例和分析3.2.2整型常量与整型变量,3.2.1整型数据运算程序举例和分析,例2.1鸡兔同笼。在一个茏子里同时养着一些鸡和兔子,你想了解有多少只鸡和多少只兔,主人对你说:我只告诉你鸡和兔的总头数是16和总脚数是40,你能不能自己计算有多少只鸡和多少只兔?,3.2.1整型数据运算程序举例和分析,解题思路:设x代表鸡的数量,y代表兔的数量,总头数为h,总脚数为f列出下面的方程式:x+y=h(1)2x+4y=f(2)解方程得到:,3.2.1整型数据运算程序举例和分析,#includevoidmain()inth,f,x,y;h=16;f=40;y=(f-2*h)/2;x=h-y;printf(“%d%dn”,x,y);,定义整型变量h,f,x,y,使h的值等于16,使f的值等于40,计算兔的个数,计算鸡的个数,3.2.1整型数据运算程序举例和分析,#includevoidmain()inth,f,x,y;h=16;f=40;y=(f-2*h)/2;x=h-y;printf(“%d%dn”,x,y);,输出鸡和兔个数,124,%d,%d,3.2.1整型数据运算程序举例和分析,#includevoidmain()inth,f,x,y;h=16;f=40;y=(f-2*h)/2;x=h-y;printf(“%d%dn”,x,y);,输出鸡和兔个数,12,4,%d,%d,cock=%d,rabbit=%d,3.2.1整型数据运算程序举例和分析,#includevoidmain()inth,f,x,y;h=16;f=40;y=(f-2*h)/2;x=h-y;printf(“%d%dn”,x,y);,输出鸡和兔个数,12,4,cock=%d,rabbit=%d,cock=12,rabbit=4,整型常量的表示形式,在语言中,整常数可用3种形式表示:10进制整数,如123,-4568进制整数,特点是逢8进1。在程序中凡以0开头的数都认作8进制数16进制整数。特点是逢16进1。用09、af分别代替015。在程序中凡以0 x或0X开头的数都认作16进制数,a=83;/*10进制数*/a=0123;/*8进制数*/a=0 x53;/*16进制数*/,3.2.2整型常量与整型变量,整形常数的取值范围是有限的后缀:L或l(长整型数),U或u(无符号数),a=83L;/*分配4个字节*/a=123u;/*无符号数*/a=0XA5Lu;/*16进制无符号长整数*/,整型常量的类型,数据是要存储的,不同类型的数据所分配的字节和存储方式是不同的整型变量有类型,因此整型常量也应该有类型,才能在赋值时匹配根据常量的大小、数后面加的字母l或L、u或U判断其类型,整型数据的存储方式,先转换为二进制形式,以补码表示。正数的补码与原码相同,负数的补码是该数绝对值的二进制形式按位取反加1如整数10,以二进制形式表示是1010,用两字节存放,求补码的方法,求-1的补码的方法是:,原码,诸位取反,反码,反码加1,补码,求补码的方法,求一个负数的补码的方法是:取该数(不考虑数的符号)的二进制形式,它就是原码对该原码逐位“取反”(逐位把0变1,把1变0),得到其“反码”将得到的反码加1,求补码的方法,求-10的补码的方法是?,原码,诸位取反,反码,反码加1,补码,整型变量的类型,可以定义和使用以下6种整型变量:有符号基本整型signedint无符号基本整型unsignedint有符号短整型signedshortint无符号短整型unsignedshortint有符号长整型signedlongint无符号长整型unsignedlongint,IBMPC机器所对应的不同形式整型数据的存储范围,定义变量的一般形式是:类型名变量名,变量名,;例如:inth,f,x,y;变量都必须在使用前定义,指定其类型赋值:h=37;f=88;,整型变量的定义,变量名的取名规则变量名第一个字符必须是字母或下划线,其后字符必须是字母、数字或下划线,合法:sum,average,_total,Class,day,month,Student_name,tan,li_ling不合法:Zhang-sun,Students,$123,33,变量名的取名规则变量名第一个字符必须是字母或下划线,其后字符必须是字母、数字或下划线大小写字母代表不同的字符,一般,程序中的变量名用小写字母表示变量名的长度不是无限的变量名尽量简单易记、见名知意在同一函数中,不同变量不能取相同名,变量必须“先定义,后使用”根据定义变量时指定的类型,编译系统为变量分配相应的存储单元凡未被事先定义的,系统不把它认作变量名,保证程序中变量名使用得正确指定了每一变量属于一个类型,就便于在编译时据此检查在程序中要求对该变量进行的运算是否合法,整型数据的溢出,参见课本例3.3,不同类型数据间运算,参见课本例3.4,3.3实型数据的运算与分析,3.3.1实型数据的运算举例3.3.2实型常量的表示形式3.3.3实型变量,3.3.1实型数据的运算举例,例2.2分期付款的计算。张先生为购房,向银行贷款,贷款额为D元,每月准备还P元,月利率为R,求需要多少个月才能还清。,m是还清贷款所需月数d=324500,p=3245,r=0.8%,3.3.1实型数据的运算举例,(1)d和p是整数,r是一个小数,因此程序中要分别定义整型变量和实型变量。(2)公式中用到对数log,这个对数是以10为底的。对数log的函数log10,3.3.1实型数据的运算举例,#include#includevoidmain()intd,p;floatr,m;d=324500;p=3245;r=0.008;m=(log10(p)-log10(p-d*r)/log10(1+r);printf(“month=%fn”,m);printf(“total=%fn”,m*p);,用到数学函数时,定义整型变量d,p,定义实型变量r,m,赋值,求m的值,3.3.1实型数据的运算举例,#include#includevoidmain()intd,p;floatr,m;d=324500;p=3245;r=0.008;m=(log10(p)-log10(p-d*r)/log10(1+r);printf(“month=%fn”,m);printf(“total=%fn”,m*p);,输出m的值,计算并输出还款数,total=655436.127930,month=201.983404,输出实数时,3.3.1实型数据的运算举例,#include#includevoidmain()intd=324500,p=3245;doubler=0.008,m;m=(log10(p)-log10(p-d*r)/log10(1+r);printf(“month=%fn”,m);printf(“total=%fn”,m*p);,定义变量时赋初值,定义double型无警告错,3.3.2实型常量的表示形式,实数在计算机语言中常称为浮点数十进制小数形式(必须有小数点且小数点前后不能同时没有数字)如:0.123,123.23,0.0,12.指数形式(e前必须有数字且e后必须为整数)如:123e3或123E3,3.3.2实型常量的表示形式,实数在计算机语言中常称为浮点数可加后缀f或F:表示该浮点数占4个字节(float)若不加是按8个字节存的(double),输出格式字符为:%f,实数的存储形式对于实数,一律采用指数形式存储123.456标准化指数形式为0.123456103,3.3.3实型变量,实型变量的分类单精度实型变量(float型)双精度实型变量(double型)长双精度实型变量(longdouble型),3.3.3实型变量,实型变量的分类实型数据的舍入误差实型变量是由有限的存储单元组成的能提供的有效数字总是有限的在有效位以外的数字将被舍去会产生一些误差,3.3.3实型变量,实型变量的分类实型数据的舍入误差例:实型数据的舍入误差,#includevoidmain()floata;a=1234.1415926;printf(a=%fn,a);,a=1234.141602,7位有效位,3.3.3实型变量,实型变量的分类实型数据的舍入误差把实数按双精度数处理把程序中的实常量处理成双精度型,分配8个字节,以提高精度。,floata;a=1234.1415926;,双精度,单精度,编译时有警告,最好:doublea;,3.4字符型数据的运算,3.4.1字符数据运算的简单例子3.4.2字符常量和字符变量3.4.3字符串常量,3.4.1字符数据运算的简单例子,例2.4逐个输出英文字母C,H,I,N,A。然后按反序输出,即A,N,I,H,C。,#includevoidmain()chara=C,b=H,c=I,d=N,e=A;printf(“%c%c%c%c%cn”,a,b,c,d,e);printf(“%c%c%c%c%cn”,e,d,c,b,a);,定义字符变量,3.4.1字符数据运算的简单例子,例2.4逐个输出英文字母C,H,I,N,A。然后按反序输出,即A,N,I,H,C。,#includevoidmain()chara=C,b=H,c=I,d=N,e=A;printf(“%c%c%c%c%cn”,a,b,c,d,e);printf(“%c%c%c%c%cn”,e,d,c,b,a);,用单撇号括起来,输出字符,CHINAANIHC,3.4.2字符常量和字符变量,字符常量字符常量是用单撇号括起来的一个字符英文字母可以作为字符常量键盘上的字符都可以作为字符常量小写字母和大写字母是不同的字符常量,3.4.2字符常量和字符变量,转义字符(形式上不是一个字符,但它是占一个字符)用开头的特殊形式的字符常量,用以产生一个动作。如:nr、t、v、123等。转义字符必须以反斜杠“”开头“”后只能有一个字符(或代表字符的8进制或16进制数),3.4.2字符常量和字符变量,t跳到下一个输出区b消除前一个已输出的字符r将当前的输出位置返回在本行开头f将当前的输出位置移到下页的开头0常用于字符串中,作为串结束标志代表一个反斜杠字符“”代表一个单撤号字符”代表一个双撤号字符ddd13位8进制数所代表的字符xhh12位16进制数所代表的字符,3.4.2字符常量和字符变量,ASCII表,G107x47,等价,3.4.2字符常量和字符变量,字符变量用来存放字符常量只能放一个字符字符变量的定义形式:char字符变量列表;,字符的存储方式对于字符,按ASCII代码存放;分配一个字节的内存空间;所以只能表示0-255间的数A的ASCII代码是65(1000001),3.4.2字符常量和字符变量,字符数据与整型数据在一定条件下通用charc=a;与charc=97;等价,3.4.2字符常量和字符变量,字符数据与整型数据在一定条件下通用例2.5将两个整数分别赋给两个字符变量,再将字符数据按字符和整数形式输出。#includevoidmain()charc1=97,c2=98;printf(“%c%cn”,c1,c2);printf(“%d%dn”,c1,c2);,charc1=a,c2=b;,ab,9798,值的输出形式取决于printf函数格式串中的格式符,输出字符,输出整数,3.4.2字符常量和字符变量,字符数据与整型数据在一定条件下通用例2.5将两个整数分别赋给两个字符变量,再将字符数据按字符和整数形式输出。字符a的存储(用ASCII代码存放),按%c输出:a,按%d输出:97,printf(“%c%cn”,97+1,a+1);输出什么?,3.4.2字符常量和字符变量,字符数据与整型数据在一定条件下通用例2.5将两个整数分别赋给两个字符变量,再将字符数据按字符和整数形式输出。,bb,printf(“%d%dn”,97+1,a+1);输出什么?,9898,3.4.2字符常量和字符变量,字符数据与整型数据在一定条件下通用例2.6将小写字母转换为大写字母。#includevoidmain()charc1=a,c2=b;c1=c1-32;c2=c2-32;printf(%c,%cn,c1,c2);,a97A65b98B66c99C67规律是?,A,B,3.4.3字符串常量,字符串常量是一对双撇号括起来的字符序列Howdoyoudo.CHINAa都是合法的字符串,要点:请区别”A”与A的不同。因为它们各自在内存中存放的长度不同。“A”AASCII码为0的字符即空操作字符,不引起任何控制动作,也不是一个可显示的字符,3.4.3字符串常量,3.4.3字符串常量,字符串常量是一对双撇号括起来的字符序列是字符常量是字符串常量二者的含义是不同的,charc;c=a;,正确,charc;c=”a”;,错误,存放字符a的存储单元,存放字符串”a”的存储单元,3.5变量赋初值,1、变量赋初值的一般形式类型说明符变量1=值1,变量名2=值2,、2、对变量的初始化:C允许在变量定义时直接用“=”对其进行赋值。如:intsum=0;inta,b,c=5;inta=3,b=3,c=5;charc1=w;不能这样写:inta=d=e=10;,例:字符数据的算术运算。main()charch1,ch2;ch1=a;ch2=Bprintf(“ch1=%c,ch2=%cn”,ch1-32,ch2+32);printf(ch1+200=%dn,ch1+200);printf(ch1+200=%cn,ch1+200);/*字符形式输出一个大于255的数值*/printf(ch1+256=%dn,ch1+256);printf(ch1+256=%cn,ch1+256);程序运行结果:ch1=A,ch2=bch1+200=297ch1+200=)ch1+256=353ch1+256=a思考题:用字符形式输出一个大于255的数值,会得到什么结果?,分配一个字节的内存空间;所以只能表示0-255间的数,3.6各类数值型数据之间的混合运算,3.6.1自动转换3.6.2强制转换,3.6.1自动转换,各类数值型数据间的混合运算char和short型转换为int型float型一律转换为double型整型(包括int,short,long)数据与double型数据进行运算,先将整型转换为double型,各类数值型数据间的混合运算10+a+i*f-d/e,先将a转换成整数97,运算结果为107,i为整型f为float型d为double型e为long型,3.6.1自动转换,各类数值型数据间的混合运算10+a+i*f-d/e,107,先将i与f转成double型,运算结果为double型,i为整型f为float型d为double型e为long型,3.6.1自动转换,各类数值型数据间的混合运算10+a+i*f-d/e,107,double型,先将107转换成双精度型,结果为double型,i为整型f为float型d为double型e为long型,3.6.1自动转换,各类数值型数据间的混合运算10+a+i*f-d/e,107,double型,double型,转换为double型,double型,最终结果为double型,i为整型f为float型d为double型e为long型,3.6.1自动转换,3.6.2.强制转换,强制类型转换在表达式中也可以利用“强制类型转换”运算符将数据转换成所需的类型,(double)a(将转换成double类型)(int)(x+y)(将x+y的值转换成int型)(float)(5%3)(将5%3的值转换成float型),强制类型转换强制类型转换的一般形式为:(类型名)(表达式),例2.8强制类型转换。#includevoidmain()floatf=3.6;inti;i=(int)f;printf(f=%f,i=%dn,f,i);,f3.600000,i=3,不改变f的值,3.6.2.强制转换,强制类型转换的应用:(1)为满足运算的要求:如:inti=4;floatx=13.6;(int)x%i;(13%4=1)(2)提高运算精度:如:inti=10;floatx;x=i/3+25.5;(3+25.5=28.5)或x=(float)i/3+25.5;(3.33+25.5=28.83),3.6.2.强制转换,3.7算术运算符和算术表达式,3.7.1C运算符3.7.2算术运算符3.7.3算术表达式,3.7.1C运算符,(1)算术运算符(+-*/%)(2)关系运算符(!)(3)逻辑运算符(!|)(4)位运算符(|)(5)赋值运算符(及其扩展赋值运算符)(6)条件运算符(?:),3.7.1C运算符,(7)逗号运算符(,)(8)指针运算符(*)(9)求字节数运算符(sizeof)(10)强制类型转换运算符((类型))(11)成员运算符(.-)(12)下标运算符()(13)其他(如函数调用运算符(),算术表达式。如2+6.7*3.5+sin(0.5)赋值表达式。如a=5.6逗号表达式。如a=3,y=4,z=8用逗号连接若干个表达式,顺序执行这些表达式,整个逗号表达式的值是最后一个表达式的值(今为8),3.7.1C表达式,3.7.2算术运算符,1.基本的算术运算符(双目):+:加法运算符-:减法运算符*:乘法运算符/:除法运算符%:求余运算符(要求两侧均为整数。如19%4,结果为3。P47例),3.7.2算术运算符,两个整数相除的结果为整数如5/3的结果值为,舍去小数部分若一个是实型,那么结果为double型P47例,3.7.2算术运算符,如果参加+、-、*、/运算的两个数中有一个数为float或double型,则结果都是double型,因为系统将所有float型数据都先转换为double型,然后进行运算。这是为了提高运算精度。,强制类型转换运算符,3.7.2算术运算符,2.自增、自减运算符:作用是使变量的值增或减+i与-i称为前缀形式:在计算时先改变变量的值,再参与其它运算i+与i-称为后缀形式:在计算时先参与其它运算,再改变变量的值,3.7.2算术运算符,2.自增、自减运算符:作用是使变量的值增或减例:若i=1则k=+i+2运行后i=2、k=4而k=i+2运行后i=2、k=3+与-运算符的的结合性为右结合。P48页3.16,3.7.3.算术表达式,用算术运算符和括号将运算对象(也称操作数)连接起来的、符合语法规则的式子,称为算术表达式运算对象包括常量、变量、函数等运算符的优先级运算符的结合性,运算符的优先级与结合性,先按运算符的优先级别高低次序执行如果优先级别相同,则按规定的“结合方向”处理算术运算符赋值运算符逗号运算符,+和-高于其他,3.8赋值运算符和赋值表达式,3.8.1赋值运算符3.8.2类型转换3.8.3复合赋值运算符,赋值运算符的使用要点,1、含义:将“=”右边的运算对象之值赋给左边的运算对象。如:x=1;x=x+1;2、使用要点:(1)当“=”两边数据类型不同时,将进行数据类型的自动转换,原则是:以“=”左边运算对象的数据类型为准。如:intx;floaty=3.5;x=y;则运行结果为int型说明:(2)复合赋值运算符,赋值运算时不同类型数据间的自动转换,1、实型数据赋值给整型数据时,舍弃小数部分;即:int=float的结果为int型。如:floata;ints;a=12.34;s=a;这时s的值为12。2、将整型数据赋值给实型变量时,数值不变,但数据是浮点形
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年石化化工行业6月看好钾肥、阿洛酮糖、制冷剂、农药、生物柴油的投资方向
- 制造业供应链数字化协同管理在2025年的绿色制造与环保技术应用
- 2025年能源行业报告:碳捕获与封存技术应用前景预测与解析
- 工业互联网平台NFV在智能城市智慧旅游中的应用实践报告
- 直播电商行业主播个人品牌价值评估与市场分析报告
- 2025年音乐流媒体平台版权运营与数字音乐版权市场发展趋势与挑战分析报告
- 城市生活垃圾分类处理公众参与与社区环保活动策划研究报告
- 医疗美容行业消费者心理与服务质量改进策略深度报告
- 评课万能评课稿集合12篇
- 施工成本控制管理制度
- 潘祖仁版高分子化学(第五版)课后习题答案.24401
- 投标密封条格式大全
- 搭桥手术配合改
- 《爱的教育》课外阅读指导课课件
- 奥林匹克精神
- 10以内序数(课堂)课件
- 2021年安徽省农业信贷融资担保有限公司招聘笔试试题及答案解析
- 精选芭蕾舞男女演员之间的潜规则汇总
- Q∕SY 1770.6-2014 连续管常规修井作业规程 第6部分:速度管柱作业
- 大型污泥脱水离心机机组安装及调试工法
- 国家重点保护野生植物(Ⅱ级)采集申请表
评论
0/150
提交评论