高级语言程序设计教学课件第5章.ppt
第5章 数据类型和表达式,卓罐溅遮撇孕贰佣谨删搽雕纽阉晦土泥谆迈粤芍娟凉索稽发羔页改岛赶槛高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,2,C的数据类型,C数据类型,指针类型,空类型 void,基本类型,字符类型 char,数值类型,浮点型,单精度型float,双精度型double,构造类型,枚举类型 enum,数组,结构体 struct,共用体 union,抡跋百鲜敖宋谅篮诀房裸搭须敞屋串荷襟撼葬锋镑澳务逐越件骆帘说你事高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,3,5.1 数据的存储格式,数据在计算机内存中以【】形式存储A、二进制B、十六进制C、十进制D、八进制整型数据在内存中以【】存储A、原码B、反码C、补码D、ASCII码,酚耿庇氨跋典舜猩狈戴皖泄肿哩尼肺尺吞电讶焰活益狈竟泛擎嚷厅笔躇士高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,4,符号常量,符号常量定义:用标识符代表一个常量使用符号常量的优点含义清楚一改全改,注意:符号常量名通常用大写,变量名用小写,驾嗓侣患棱楚毗慷懦头啮永蹦捅膛剪阐牡尝牺尊阴邵绣祈怎干衅途专泉洽高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,5,#include#define PI 5.1415927 main()float r1,r2,len1,len2,s1,s2;r1=10;r2=20;len1=2*PI*r1;s1=PI*r1*r1;printf(len1=%f s1=%fn,len1,s1);len2=2*PI*r2;s2=PI*r2*r2;printf(len2=%f s2=%fn,len2,s2);,符号常量定义,符号常量使用,敬宰帽笛伶嘿病巳脾若氯溯惮藐贬框硷氖谭浩伺峦兜芥戎馁拟批暮谅寺面高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,6,5.2基本数据类型,整型实型字符型,九淮酶炭未辅执明捂端蛾沮蛔陨絮丝渔撮窄好页鸭锰准涎躯筏谱班增交尿高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,7,5.2.1整型,基本类型:int,聂返炽踪秒驱吱碉琴杉兼雕队胃噶弊墅钨宏俯涅缕伦腮譬藉啥脐卫闭宙镰高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,8,1、整型常量表示方式十进制如:12,-123,0八进制(以0开头)如:012 表示10十六进制(以0 x开头)如:0 x12 表示18,长整型需在数值后面加上一个字母L或l:123L、0123L。无符号常量后面加上字母U或u:123U、0 x123U。,巍件家齐吭文烘控皂谁熬账俐样娃店睦伤卉桑庞姜虏蘑账僧奔词柴蔷僳插高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,9,5.2.2 实型数据,1、实型数据的存储实型数据一般占4个字节(float型),举例:(3.14159)10=0.110 0100 1000 0111 1110 0111 110*1010,例银锄技愤俏逐状妙凹褒偷赋咳本仅觅送截正盗帜僳碌颐佯辱淌管挑启后高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,10,2、实型常量表示方式十进制小数形式.123 123.456-123.0.0指数形式123.4e4-123E3.123e-10,坚懊缎郁英颠奥馁桶七孪讳臃贯鹰凉穿并全猜鸣仲去吏椽杜阶李炕瞒淮榜高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,11,3、实型变量说明:ANSI C并没有具体规定每种类型的长度、精度和数值范围。下面是常用的C编译系统的情况,囚气夹舟闯酚赔答欣脐婴昭硕衫森澈摘板梦勤涤划框会奋殆啥衷芝恭榆作高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,12,实型数据的舍入误差从上面的表中可以看出,实型数据的有效数据是有限的,有效数据以外的数字将被舍去。因此会产生误差,傣鞘嗣纠晰闪坞错争丁杯摄堤仙寡拖平蔽猴组鸿粪芹习丈跌谬正呼级区捶高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,13,4、实型常量的类型系统默认为double类型若希望指定为float类型在后面加f或F2.3f-0.123F 2e-3f,腐纤诬奴樟秃整笛粟撵快爸茎改拈噶竖氯芽兰英赚亨苯戊琵澜胰档充辣遣高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,14,5.2.3 字符型数据,1、字符数据的存储一个字节存储一个字符数据字节中存储的是字符的ASCII码如:字符A,蹬叁你肆傅悦畜坚蚌蠕阜月常毁贯毅漓膀播惜闯未课裙郧萄乞瞩鹿晕括匆高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,15,2、字符常量以单撇号括起来的一个字符。如a、C、#以一个开头的字符序列。,降铡邮生丛娶裸鬃愧祟致嫡勋漓到桑掣野刨刻翔竣葫羚杭财考讫才堕憋许高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,16,问题:已知换行的ASCII码值为10,则下列正确表示换行符的方法是:(ch是字符型变量)(A)ch=n;(B)ch=10;(C)ch=12;(D)ch=x10;(E)ch=xa;(F)ch=10;(G)ch=10;,宰沾杨岔啥贝汁货蔬篷狗呻梭钞鳞龙肿瘁岸运父委郝傍澈衬贱七债狞眺竣高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,17,字符变量一个字符变量只能存放一个字符字符变量的定义形式,如:char c1,c2;字符变量的使用方式,如:c1=a;c2=b;,char c1,c2;c1=a;c2=b;,些号摆铀围绳梦爬野卑摩绳八万跳徒溢景耻晕枯榷阶诽炔凑哟苗凉恐遥惋高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,18,问题:若有说明语句:char c72;则变量c(A)包含1个字符(B)包含2个字符(C)包含3个字符(D)说明不合法,c的值不确定,以单撇号括起来的一个字母以一个开头的字符序列,娇村茨沟赫向燎噬夯貉斜肋黑田箍嚷躁誉绿椒挣痪累激曲钾隙卑蕴卵势柱高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,19,5.3运算符及表达式,C运算符简介,质诌泥猪闸契荧管秽辜阿青湾楚组朴章军瘦镊淄设虱浑革羹多曾壹造驱鞋高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,20,算术运算符,基本的算术运算符+-*/%+-优先级:-(负)+-*/%+-(减)结合方向+-*/%从左向右-(负)从右向左,功能运算量优先级别结合方向结果的类型,粒钟魏综犊家卷佰两萎亲抗辽绰弯健恃架舵柄抑扬九匹患净膏篷摄晨钝允高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,21,说明:%只能进行整数的取模运算,且余数与被除数的符号相同整数的算术运算结果仍为整数如果算术运算中有一个数是实数,则结果为double型,2-2.5,-1 1 1 0(),准荫门裸侯护驮鹰咬呈睛晓资咨射蟹善薛陪契艳芭肯穿啸篓盼铲鸟窑俊灿高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,22,自增、自减运算符+-,作用使变量值加1或减1种类前置+i,-i先执行i=i+1或i=i-1,再使用i值后置 i+,i-先使用i值,再执行i=i+1或i=i-1,5+(a+b)+,哎苛填陌牟蠕逼认紧少轰税荐裴蜒蔑俏纠磋傀呕坡勇垣姑诵咎航镜办伙件高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,23,说明:优先级:-+-*/%+-+-结合方向:自右向左,例 i=3;printf(“%d”,-i+);,例 j=2;k=3;printf(“%d”,j+k);,-(i+)printf(“%d”,-i);i=i+1;结果:-3,i=4,(j+)+kprintf(“%d”,j+k);j=j+1;/结果 5,j=3,髓翟被孔妮昌读稽浊廖妖颅抚尊妥题种诗姑锄转板炕耽咋叙筐垛箕见幌痒高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,24,【例3-2】逻辑运算举例,#include void main(void)int c,x=0,y=-5;printf(%d,%dn,!x*y,x,-5,02,1,11,0,0,c=x|yx=x+1,+x:先执行x=x+1,再将x的值作 为表达式+x的值。x+:先将x的值作为表达式x+的 值,再执行x=x+1。,c=x&yx=x+1,悦白时蛙鞠腻租网渣轴悟棘傈蟹鲍饰酣校褐界急悯绞陶号笨暖郸蝉封拘欠高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,25,赋值运算符,简单赋值运算符符号:=格式:变量标识符=表达式作用:将一个数据(常量或表达式)赋给一个变量,例a=3;b=sqrt(a);c=b+2;,眩迈浙事傻举咳消汗洲部肢甄置枯宽歉簿组日提司显受创俩霹缎擦植图铸高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,26,复合赋值运算符种类+=-=*=/=%=含义var op=exp var=var op(exp),a+=3 x*=y+8x%=3,a=a+3 x=x*(y+8)x=x%3,姓碍就咨汕阅绍侥忱罕讣惠舱管焉焉啼枚庞惠庚连半疑柏磁彪我耗察嘎却高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,27,说明:优先级:优先级很低结合方向:自右向左左侧必须是变量,不能是常量或表达式赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型赋值表达式的值与变量值相等,且可嵌套,3=x-2*y;a+b=3;,例 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,窍述氮言槽侄寻然隧筛绞盔蛀织挛莉糠乓蝶货驼饺延双侮辞吐赢村植碘匙高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,28,逗号运算符,逗号运算符形式:表达式1,表达式2,表达式n优先级:最低结合性:从左向右逗号表达式的值:等于表达式n的值,main()int x,y=7;float z=4.0;x=(y=y+6,y/z);printf(x=%d,y=%d,z=%f,x,y,z);,x=3,y=13,z=4.000000,俯亿泉朵腻拈袋慈获泪尽耽酒榔蔼违苗告帅棉善印勋爆捎蛹黄赋诊旱绥倘高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,29,位运算符,痔涣温痛炬阐串贩炯翁柑唯泞橡泻最送蹦嗅竞厢赵焦踌省夷追感檀戌契开高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,30,5.4 类型转换,混合运算的规则不同类型数据混合运算,先转化为同一类型转化规则float型一律转化为double型char,short型转化为int型精度低类型转化为精度高类型,伪卉挫拎障恃糯秃轧讽蕾由阂授屹条伙习咨笋遣料氢中掠阎套睡火孔殿锌高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,31,int a=3;float f=5.14;char c=a;10+c+a*f的结果是?10+c c转化为int型,c的值为97,则结果为107a*f a和f转化都为double型,结果为9.42000010+c+a*f 将10+c的结果转化为double型与a*f的结果相加结果为116.420000,翔糕乐惶伎沟杜阎瓢道委枫递赢倡惕揩填潞初姑号就尊阻秉送栖蒲崎睡砍高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,32,强制类型转换运算符,作用:将一个表达式的值转换成所需类型一般形式:(类型名)(表达式)说明:表达式必须用括号括起来在进行强制转换时,得到一个所需类型的中间变量,原来变量的类型并没有发生变化,(double)a(int)(x+y)(float)(5%3),(int)x+y(int)(x+y),main()float x;int i;x=5.6;i=(int)x;printf(x=%f,i=%d,x,i);结果:x=5.600000,i=5,忍绚耍郴卜称屿距升岛崇橱屁果叹俯拽硝生更嚏运刊烷遏典矮瘩亏觅檄歧高级语言程序设计教学课件第5章高级语言程序设计教学课件第5章,