资源描述:
《《C语言算术运算》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第2讲C语言算术运算主讲人:王华教学目标:通过本次学习,使学生掌握算术运算,逗号运算,以及正确判断各类表达式并求值本讲重点:数据类型转换、本讲难点:数据类型的相互转化自加、自减运算在上一次课中我们了解数据类型种类,并知道了存储得空间和大小,在运算中就要注意类型问题!!使我们这次要学习得重点。类型符号关键字数的表示范围所占位数整型字符型实型有无(signed)int16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~21
2、4748364716unsignedint0~65535320~4294967295unsignedlongunsignedshort160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127无unsignedchar80~255不同类型数据间的转换(P9)隐式转换什么情况下发生运算转换------不同类型数据混合运算时赋值转换------把一个值赋给与其类型不同的变量时输出转换------输出时转换成指定的输出格式函
3、数调用转换------实参与形参类型不一致时转换运算转换规则:不同类型数据运算时先自动转换成同一类型doublefloatlongunsignedintchar,short低高说明:必定的转换运算对象类型不同时转换例charch;inti;floatf;doubled;ch/i+f*d-(f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+‘a’+i*f-d/l例inti
4、;floatf;doubled;longl;显式转换(强制转换)一般形式:(类型名)(表达式)例(int)(x+y)(int)x+y(double)(3/2)(int)3.6说明:强制转换得到所需类型的中间变量,原变量类型不变例main(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}结果:x=3.600000,i=3精度损失问题较高类型向较低类型转换时可能发生运算符和表达式C运算符算术运算符:(+-*/%++--)关系运算符:(<<===
5、>>=!=)逻辑运算符:((!&&
6、
7、)位运算符:(<<>>~
8、^&)赋值运算符:(=及其扩展)条件运算符:(?:)逗号运算符:(,)指针运算符:(*&)求字节数:(sizeof)强制类型转换:(类型)分量运算符:(.->)下标运算符:([])其它:(()-)学习运算符应注意:运算符功能与运算量关系要求运算量个数要求运算量类型运算符优先级别结合方向结果的类型算术运算符和表达式基本算术运算符:+-*/%结合方向:从左向右优先级:----->*/%----->+-(2)(3)(4)说明:“-”可为单目运
9、算符时,右结合性两整数相除,结果为整数%要求两侧均为整型数据例5/2=-5/2.0=例5%2=-5%2=1%10=5%1=5.5%2例5/2=2-5/2.0=-2.5例5%2=1-5%2=-11%10=15%1=05.5%2()自增、自减运算符++--作用:使变量值加1或减1种类:前置++i,--i(先执行i+1或i-1,再使用i值)后置i++,i--(先使用i值,再执行i+1或i-1)例j=3;k=++j;j=3;k=j++;j=3;printf(“%d”,++j);j=3;printf(“%d
10、”,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自增、自减运算符++--种类:前置++i,--i(先执行i+1或i-1,再使用i值)后置i++,i--(先使用i值,再执行i+1或i-1)说明:++--不能用于常量和表达式,如5++,(a+b)++++--结合方向:自右向左优先级:--++------->*/%----->+-(2)(3)(4)例-i++-(i++)i=3;p
11、rintf(“%d”,-i++);//-3例j+++k;(j++)+k;例-i++i=3;printf(“%d”,-i++);main(){inta,b,x,y;a=b=10;x=++a;y=b++;printf(“%d,%d”,x,y);}a10b10xy10111111前缀:先增减、后引用后缀:先引用、后增减ab55main(){inta,b,x,y;a=5;b=5;x=++a;y=b++;printf(“a=%d,b=%d”,a,b);printf(“x