大学C语言实用教程课件-第3章.ppt
《大学C语言实用教程课件-第3章.ppt》由会员分享,可在线阅读,更多相关《大学C语言实用教程课件-第3章.ppt(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第 3 章章 数据运算数据运算 必须连接两个运算量的运算符称为二元运算符必须连接两个运算量的运算符称为二元运算符 a+b a%b a/b 只连接一个运算量的运算符称为一元运算符只连接一个运算量的运算符称为一元运算符 -a a+ -b运算符运算符功能功能说明说明+ - + -正负号、自加、自减正负号、自加、自减一元运算符一元运算符* / %乘乘 除除 求余数求余数二元运算符二元运算符+ -加加 减减二元运算符二元运算符1. 算术运算符算术运算符用算术运算符连接数值型的运算量而得到的式子。用算术运算符连接数值型的运算量而得到的式子。 -5*3+6%4/2-1 (a+b)/(a-b) a+(b+)
2、*c (1)求余运算的规则)求余运算的规则 假设两个整数分别为假设两个整数分别为a和和b,则,则a%b=a-a/b*b 8%3=2,-8%3=-2,8%(-3)=2 -8%(-3)=-2(2)自加(加)自加(加1)自减(减)自减(减1)运算)运算 +i 表示表示i=i+1 -i 表示表示i=i-12. 算术表达式算术表达式 +或或-可以用于前缀,也可以用于后缀。可以用于前缀,也可以用于后缀。 +n 表示先令表示先令n=n+1,然后取然后取n的值的值 /先运算后变化先运算后变化 n+ 表示先取表示先取n的值,然后令的值,然后令n=n+1 /先运算后变化先运算后变化 如果前缀或后缀运算形成一条语句
3、,其运算结果是相同的。如果前缀或后缀运算形成一条语句,其运算结果是相同的。例如,设例如,设 i=5,则,则 i+;及及 +i;运算后,运算后,i的值均为的值均为6。100101101100【例【例】加加1和减和减1运算。运算。 #include void main() int a=100; printf(%dn,a); printf(%dn,+a); /前缀前缀 printf(%dn,a-); /后缀后缀 printf(%dn,a); 运算符运算符功能功能优先级优先级结合性结合性+ - + - 正号正号 负号负号 自加自加 自减自减自右向左自右向左* / %乘乘 除除 求余求余自左向右自左向右
4、+ -加加 减减自左向右自左向右 -+i -i+ 5*6%4/3 a+b-c 用圆括号可以提高某个运算符的优先级或结合性,但不允许使用圆括号可以提高某个运算符的优先级或结合性,但不允许使用方括号或花括号。用方括号或花括号。 x+y*s-a+4/5*32与与(x+(y*(s-a)+4)/5)*323. 算术表达式求值规则算术表达式求值规则(1)算术运算符的优先级和结合性)算术运算符的优先级和结合性:不同的运算符同时出现在表达式中时,进行运算的优不同的运算符同时出现在表达式中时,进行运算的优先次序先次序同一优先级的运算符同时出现在同一表达式中时,进同一优先级的运算符同时出现在同一表达式中时,进行运
5、算的顺序行运算的顺序#include void main() int a=3,b=5,c=15,d=2; printf(%dn,6-a*b/c%d); printf(%dn,+a-a+); printf(%dn,a); C编绎系统编绎系统先将所有的先将所有的char和和short int都转换成都转换成int,所有的,所有的float都转换成都转换成double。 如果表达式中如果表达式中只含同类型的运算量,则直接进行运算只含同类型的运算量,则直接进行运算,运算,运算结果即表达式的值也是同类型的。结果即表达式的值也是同类型的。 3/2 值为值为1(整型整型) 3.0/2.0 值为值为1.5(双
6、精度型双精度型) A+B 值值为为131(int)型型 如果表达式中如果表达式中含有不同运算类型的运算量,先将精度较低的含有不同运算类型的运算量,先将精度较低的运算量转化成精度较高的类型运算量转化成精度较高的类型,再与精度较高的运算量进行运,再与精度较高的运算量进行运算,得到的运算结果为精度较高的类型。算,得到的运算结果为精度较高的类型。(2)自动类型转换规则自动类型转换规则【例【例】 算术表达式计算自动类型转换规则算术表达式计算自动类型转换规则 #include void main() char ch=a; int i=5; unsigned int j=6; long int k=12;
7、float f=3.0; double d=6.0; printf(“%lfn”,ch/i+i*k-(j+k)*(f*d)/(f+i); 38.500000 ch /i + i * k -( j + k )*( f * d )/( f + i ) int long long double double double long double double double - - (3)强制类型转换规则使用强制应注意以下几点:使用强制应注意以下几点:(1)在进行强制类型转换时,)在进行强制类型转换时,类型关键字必须用括号括住类型关键字必须用括号括住。例。例如如(int)x不能写成不能写成int x。
8、(2)在对一个表达式进行强制类型转换时,)在对一个表达式进行强制类型转换时,整个表达式也应该整个表达式也应该用括号括住用括号括住。例如,。例如,(float)(a+b)若写成若写成(float)a+b就只对变量就只对变量a进行了强制类型转换。进行了强制类型转换。(3)在对变量或表达式进行了强制类型转换后,并不改变原变在对变量或表达式进行了强制类型转换后,并不改变原变量或表达式的类型量或表达式的类型。例如,设。例如,设x为为float型,型,y为为double型,则型,则(int)(x+y)为为int型,而型,而x+y仍然是仍然是double型。型。(4)将)将float型或型或double型强
9、制转换成型强制转换成int型时,对小数部分是四型时,对小数部分是四舍五入还是简单地截断,取决于具体的系统。舍五入还是简单地截断,取决于具体的系统。VC+采用的是采用的是截断小数截断小数的办法。的办法。 2.500000 1 VC+对高精度类型转换乘低精度类型增强了检查能力,对高精度类型转换乘低精度类型增强了检查能力,因此,对因此,对float型变量用型变量用double型常数初始化将给出警告。型常数初始化将给出警告。【例【例】算术表达式计算强制类型转换规则算术表达式计算强制类型转换规则。 #include void main() int a=7,x=3,y=2; float b=2.5F,c=
10、4.7F,z=3.5F; printf(%fn,b+a%3*(int)(b+c)%2/4); printf(%dn,(x+y)%2+(int)b/(int)z); 3.2 赋值运算赋值运算1. 赋值运算符和赋值表达式赋值运算符和赋值表达式 v=e; / 赋值语句赋值语句 v=e / 赋值表达式赋值表达式 赋值运算符:赋值运算符: += -= *= /= %= = &= |= = x=x+1; a=a-1; c=c*(2+x); x+=1; a-=1; c*=2+x;2. 赋值表达式的值和类型赋值表达式的值和类型 在赋值表达式中,被赋值的变量得到的值就是赋值表达式在赋值表达式中,被赋值的变量得到
11、的值就是赋值表达式的值,而被赋值的变量的类型就是赋值表达式的类型。的值,而被赋值的变量的类型就是赋值表达式的类型。例如,在形如例如,在形如 v=e的赋值表达式中,的赋值表达式中,变量变量v的值就是该赋值表达式的值,变量的值就是该赋值表达式的值,变量v的的类型也就是赋值表达式的类型类型也就是赋值表达式的类型。#include void main() int a=-1; unsigned int b; b=a; / 低精度转换成高精度低精度转换成高精度 printf(%d %un,a,b); #include void main() int a; char b; float c; c=2.5; /
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学 语言 实用教程 课件
限制150内