您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > c语言 程序逻辑_03
SSOFT2011上节课回顾•⑴学习了C语言的数据类型•⑵学习了C语言的变量及其用途•⑶学习了C语言输入函数scanf()的详细用法SSOFT2011第三章赋值、逗号、算术运算和类型转换SSOFT2011本章内容•⑴理解什么是表达式•⑵理解赋值运算•⑶理解逗号运算•⑷理解算术运算•⑸记住运算符的优先级•⑹理解类型的转换SSOFT2011表达式•表达式是由运算符连接常量、变量、函数所组成的式子。•每个表达式都有一个值和类型。–表达式求值,是按运算符的优先级和结合性所规定的顺序进行。–C语言规定,参加该表达式运算的所有操作数中不能包含有字符串–表达式运算之后得出来的结果,其类型就是参加该表达式所有操作数中最大的那个类型SSOFT2011赋值运算符1•基本赋值运算符–=•复合赋值运算符–+=–-=–*=–/=–%=SSOFT2011赋值运算符2•=–一般形式:•变量=表达式;–功能:将赋值运算符右边表达式的值赋给其左边的变量。•例如:x=2+b意思是将2+b的运算结果赋给变量x。–注意几个要点:•赋值号(=)左边只能是变量,绝对不能是常数或表达式。–这是因为常数和表达式是没有存储单元的•赋值号右边表达式类型要与左边的变量保持一致。–如果不一致,则先将右边表达式的值转换为与左边变量相同的类型,然后进行赋值•赋值运算符的结合方向为自右向左。–如:floatx=3.1;inty;y=x+2;这个赋值运算的处理过程是:现将2转换为2.0,再计算3.1+2.0;运算结果为5.1,最后将float的结果5.1转换为int型整数5并付给变量ySSOFT2011赋值运算符3•一般形式:–变量算术运算符=表达式;•功能:对赋值运算符左、右两边的运算对象进行指定的算术运算符运算,再将运算结果赋予左边的变量。•注意要点:–复合赋值运算符右边的表达式是一个运算”整体“,不能把它们分开。•如:a*=b+1;等价于a=a*(b+1);如果把:a*=b+1;理解为a=a*b+1;那就错了。•算算:x=5;y=x%=3+=10*=2/=3+=20-=4*=5;y=?SSOFT2011赋值表达式举例SSOFT2011逗号运算符1•逗号“,”的用法有两种:–一种是用作分隔符•inta,b,c;•scanf('%f%f%f',&f1,&f2,&f3);–一种是用作运算符(双目运算符)•y=2.1,10+x,x+y•运算优先级是所有运算符中最低的•运算顺序是自左向右的SSOFT2011逗号运算符2•例:a=2*6,a-4,a+15;•求值顺序为:–先计算2*6(计算并赋予a,计算前a没有值,计算后a=12)–再计算a-4(只计算,不赋值,计算前a=12,计算后a=12)–最后计算a+15(只计算,不赋值,计算前a=12,计算后a=12)–最终以12+15作为整个逗号表达式的值。•再考虑下列两个表达式,最终a存放的是什么值?–a=a=2*6,a-4,a+15;–a=(a=2*6,a-4,a+15);SSOFT2011逗号运算符3•例:a=(2*6,a-4,a+15);•求值顺序为:–先计算2*6(只计算,不赋值,计算前a没有值,计算后a没有值)–再计算a-4(只计算,不赋值,计算前a没有值,计算后a没有值)–最后计算a+15(计算并赋予a,计算前a没有值,计算后a=随机数+15)–最终以随机数+15作为整个逗号表达式的值。•再考虑下列两个表达式,最终a存放的是什么值?–a=a=2*6,a-4,a+15;–a=(a=2*6,a-4,a+15);SSOFT2011逗号运算符4•例:a=(2*6,a-4),a+15;•求值顺序为:–先计算2*6(只计算,不赋值,计算前a没有值,计算后a没有值)–再计算a-4(计算并赋予a,计算前a没有值,计算后a=随机数-4)–最后计算a+15(只计算,不赋值,计算前a=随机数-4,计算后a=随机数-4)–最终以随机数-4+15作为整个逗号表达式的值。•再考虑下列两个表达式,最终a存放的是什么值?–a=a=2*6,a-4,a+15;–a=(a=2*6,a-4,a+15);SSOFT2011逗号运算符5•例:a=2*6,(a-4,a+15);•求值顺序为:–先计算2*6(计算并赋予a,计算前a没有值,计算后a=12)–再计算a-4(只计算,不赋值,计算前a=12,计算后a=12)–最后计算a+15(只计算,不赋值,计算前a=12,计算后a=12)–最终以12+15作为整个逗号表达式的值。•再考虑下列两个表达式,最终a存放的是什么值?–a=a=2*6,a-4,a+15;–a=(a=2*6,a-4,a+15);SSOFT2011逗号运算符举例SSOFT2011算术运算符1•单目运算符有:–++:(自增1,运算对象必须为变量,如:a++,++a)–--:(自减1,运算对象必须为变量,如:a--,--a)–+:(取正,如:+a)–-:(取负,如:-a)•双目运算符有:–+(加,如:a+b)–-(减,如:a-b)–*(乘,如:a*b)–/(除,如:a/b)–%(求余数,运算两边必须为整型,如:a%b)SSOFT2011算术运算符2•++,--前缀形式和后缀形式的运算•例如:–设intx=5;–y=++x;表示先计算x=x+1,再计算y=x,结果y=6,x=6。–y=x++;表示先计算y=x,再计算x=x+1,结果y=5,x=6。SSOFT2011算术运算符3•双目运算符的优先级和结合性–优先级:指同一个表达式中不同运算符进行计算时的先后顺序。–结合性:指相同优先级的多个运算符的求值顺序优先级算术运算符运算结合性1()自内向外2++、--、-(取负)自左向右,注意此时++,--是作为前缀形式3*、/、%自左向右4+、-自左向右SSOFT2011算术运算符4•算术表达式–算术表达式只能由运算符、圆括号、系统库函数和运算对象组成。–如:(a+b+c)/sqrt(a)+b*(sin(x)+sin(y))•常用到的运算符优先级,参照P44的表格SSOFT2011类型转换•变量的数据类型是可以转换的。转换的方法有两种:–一种是自动转换,也叫隐式转换,又叫放大转换–一种是强制转换,也叫显式转换,又叫缩小转换SSOFT2011类型自动转换1.等于号右边的小类型在赋予左边时会自动转换为左边的大类型。(类型的大小指的是在内存中分配的空间大小)2.一个由不同类型组成的混合表达式,计算后其结果的类型是构成该表达式中最大的类型。由编译系统自动完成。自动转换遵循以下规则:–若参与运算量的类型不同,则先转换成同一类型,然后进行运算–转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。–所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。–char型和short型参与运算时,必须先转换成int型。SSOFT2011类型自动转换举例SSOFT2011强制类型转换•强制类型转换是通过类型转换运算来实现的•其一般形式为:(类型说明符)(表达式)•其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。–例如:(float)a把a转换为实型(int)(x+y)把x+y的结果转换为整型在使用强制转换时应注意以下问题:•类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。•无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。SSOFT2011强制类型转换举例SSOFT2011总结•⑴学习了什么是表达式•⑵学习了赋值运算•⑶学习了逗号运算•⑷学习了算术运算•⑸学习了运算符的优先级•⑹学习了类型的转换SSOFT2011作业本作业•简答题中的第1、5题•选择题和其他题在课外去完成,下节课上课前提问。
本文标题:c语言 程序逻辑_03
链接地址:https://www.777doc.com/doc-3080945 .html