第4章 数据运算_第1页
第4章 数据运算_第2页
第4章 数据运算_第3页
第4章 数据运算_第4页
第4章 数据运算_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、教学内容:教学内容: 4.1 4.1 数据运算的基本概念数据运算的基本概念 4.2 4.2 算术运算算术运算 4.3 4.3 赋值运算赋值运算 4.4 4.4 关系运算关系运算 4.5 4.5 逻辑运算逻辑运算 4.6 4.6 自增自减运算自增自减运算 4.7 4.7 其它运算其它运算教学要求:教学要求: 1.1.掌握各种运算符的优先级、结合方向。掌握各种运算符的优先级、结合方向。 2.2.掌握各种数据运算的运算符的运算。掌握各种数据运算的运算符的运算。 3.3.掌握混合运算时的类型转换规则掌握混合运算时的类型转换规则。 第第 4 4 章章 数数 据据 运运 算算4.14.1 数据运算的基本概

2、念数据运算的基本概念1. 1. 运算符运算符 C C语言具有丰富的运算符。语言具有丰富的运算符。 Turbo C Turbo C 提供了提供了4444种种数据操作运算符,其使用范围很宽。数据操作运算符,其使用范围很宽。 运算符运算符是一种向编译程序说明特定的运算或操作是一种向编译程序说明特定的运算或操作的符号。每一种运算符都具有特定的数据操作规则。的符号。每一种运算符都具有特定的数据操作规则。 2. 2. 运算符的分类运算符的分类 (1 1)按运算符要求运算对象的个数分类:单目运)按运算符要求运算对象的个数分类:单目运算符、双目运算符、三目运算符。算符、双目运算符、三目运算符。 (2 2)按其

3、数据操作功能分类:算术运算符、关系)按其数据操作功能分类:算术运算符、关系运算符、逻辑运算符、位运算符、运算符、逻辑运算符、位运算符、C C的特殊运算符的特殊运算符 。 3.3.运算符的优先级运算符的优先级 当一个表达式中出现多个运算符时,表达式的求值运当一个表达式中出现多个运算符时,表达式的求值运算按运算符的优先级别从高到低的顺序执行。在算按运算符的优先级别从高到低的顺序执行。在C C语言中,语言中,将将4444种运算符的优先级从高到低共分为种运算符的优先级从高到低共分为1515个等级。如表个等级。如表4.14.1所示。所示。 4.4.运算符的结合性运算符的结合性(1 1)运算符的)运算符的

4、左结合性左结合性:当一个操作数两侧的运算符具:当一个操作数两侧的运算符具有相同的优先级时,操作数先与左边的运算符结合,即有相同的优先级时,操作数先与左边的运算符结合,即自左至右的结合方向。自左至右的结合方向。(2 2)运算符的)运算符的右结合性右结合性: 即自右至左的结合方向。即自右至左的结合方向。除单目运算符、赋值运算符和条件运算符是右结合性外,除单目运算符、赋值运算符和条件运算符是右结合性外,其它运算符都是左结合性。其它运算符都是左结合性。 初等运算符初等运算符 ( )、 、 单目运算符 !、!、+ +、 、+ 、 、(类型类型) 算术运算符算术运算符 、/ 、% ,+、 关系运算符 、=

5、 ,= =、! = 逻辑运算符逻辑运算符 &、 条件运算符 ? : 赋值运算符赋值运算符 =、+=、 =、 =、/=、%= 逗号运算符 ,各类运算符的优先级(各类运算符的优先级(从高至低从高至低):):高高低低 5.5.表达式表达式 用运算符和括号将运算对象(常量、变量和函数等)用运算符和括号将运算对象(常量、变量和函数等)连接起来的、符合语言语法规则的式子,称为表达式。连接起来的、符合语言语法规则的式子,称为表达式。(1 1)简单表达式:表达式中只有一个运算符的表达简单表达式:表达式中只有一个运算符的表达式,被称为普通表达式,或称为简单表达式。式,被称为普通表达式,或称为简单表达式。

6、(2 2)复合表达式:有多个运算符构成的表达式,被复合表达式:有多个运算符构成的表达式,被称为复合表达式。称为复合表达式。(3 3)特殊表达式:在使用中,单个常量、变量和函特殊表达式:在使用中,单个常量、变量和函数(返回值)都可以看作是一个表达式,称为特殊表达式。数(返回值)都可以看作是一个表达式,称为特殊表达式。6.6.表达式求值表达式求值每一个每一个C C的合法表达式的合法表达式 ,经过运算一定能得到一,经过运算一定能得到一个确定的数值,这个数值被称为表达式的值。个确定的数值,这个数值被称为表达式的值。复合表达式的求解过程如下复合表达式的求解过程如下: (1)(1) 按运算符的优先级高低次

7、序执行。例如,先按运算符的优先级高低次序执行。例如,先乘除后加减。乘除后加减。(2)(2) 如果在一个运算对象(或称操作数)两侧的如果在一个运算对象(或称操作数)两侧的运算符的优先级相同,则按语言规定的结合方向运算符的优先级相同,则按语言规定的结合方向(结合性)进行。(结合性)进行。 4.24.2 算算 术术 运运 算算 1.五种基本算术运算符五种基本算术运算符 + + ( 加法加法 ) - - ( 减法减法/ /取负取负 ) * * ( 乘法乘法 ) / / ( 除法除法 ) % % ( 求余数求余数 ) 2. 运算符的优先级与结合性运算符的优先级与结合性 (1)算术运算符的优先级)算术运算

8、符的优先级 先先取负取负、再、再乘、除、求余乘、除、求余,最后,最后加、减法加、减法 (2)运算符的结合性为:自左至右的结合方向。)运算符的结合性为:自左至右的结合方向。 3. 3. 算术表达式算术表达式 由算术运算符和括号将运算对象连接起来形成的由算术运算符和括号将运算对象连接起来形成的运算式子,称为算术表达式运算式子,称为算术表达式 例如,例如,3 + 6 * 9 、(x + y) / 2 14.4.算术表达式的值算术表达式的值除除C C语言的特定规则外,语言的特定规则外,C C语言中算术运算与数学中语言中算术运算与数学中的算术运算规则相同,经过有限次加减除等运算,最后的算术运算规则相同,

9、经过有限次加减除等运算,最后求得表达式的值。求得表达式的值。例如,例如,表达式表达式 3 + 6 * 9 的值的值: : 57 5. C5. C语言算术运算的特定规则语言算术运算的特定规则 (1 1)两个整数相除,其商为整数,小数部分被舍)两个整数相除,其商为整数,小数部分被舍弃弃。 例如,例如, 表达式:表达式:5/2 的值为的值为 2 ,不是,不是 2.5。而表达式:而表达式:12.6/3的值为的值为4.2 ,不是不是 4。 (2 2)关于求余数运算,要求求余运算符两侧的操)关于求余数运算,要求求余运算符两侧的操作数均为整型数据,否则出错。作数均为整型数据,否则出错。 例如,例如,表达式:

10、表达式:5%3 的的值值为为2。而。而5.32出错,出错,不是合法不是合法表达式表达式。 求余运算的其他规定:求余运算的其他规定:计算结果的符号与左侧运算对象的符号相同。计算结果的符号与左侧运算对象的符号相同。例:例:-7-74 4-3-3,7 7-4-43 3左侧操作数左侧操作数a a小于右侧操作数小于右侧操作数b b时,有时,有a%b=aa%b=a。例:例:3 35 53 3,0 03 30 0(3 3)C C语言的整型、实型和字符型数据间可以混合语言的整型、实型和字符型数据间可以混合运算。运算。例例4.1 输出算术表达式的结果输出算术表达式的结果#includemain() int a,

11、b,c1; float x,y,z; a=85; b=18; x=42.6; y=28.3; c1=a/b * 9 +a %b; z=x/y(x+y)/2 1; printf(c1=%dn,c1); printf(z1=%fn, z);程序运行结果程序运行结果: c1=49 z1=39.172222a/b的值是的值是4,4乘乘9得得36,a%b的值的值1336+13得得49混合运算中数据类型的转换:混合运算中数据类型的转换:6.数据类型转换数据类型转换 1)横向向左的箭头,)横向向左的箭头,表示必须的转换。表示必须的转换。char和和short 型必须转换成型必须转换成 int 型,型,flo

12、at型必须转型必须转换成换成double型。型。 2)纵向向上的箭头,)纵向向上的箭头,表示不同类型的转换方表示不同类型的转换方向。向。(1)整型、实型和字符型数据间可以混合运算)整型、实型和字符型数据间可以混合运算(因为字符数据与整型数据可以通用)。(因为字符数据与整型数据可以通用)。一个运算符两侧的操作数的数据类型不同,则按一个运算符两侧的操作数的数据类型不同,则按“先转换、后运算先转换、后运算”的原则,首先将数据自动转换成的原则,首先将数据自动转换成同一类型,然后进行运算。同一类型,然后进行运算。例如,例如,int 型型与与 double 型数据进行型数据进行混合运算混合运算,则先将,则

13、先将 int 型数据转换成型数据转换成 double 型,然后在两个同类型的数型,然后在两个同类型的数据间进行运算,据间进行运算,结果为结果为double型。型。 注意箭头方向只表示数据类型由低向高转换注意箭头方向只表示数据类型由低向高转换.例例4.2整型、实型数据间混合运算整型、实型数据间混合运算#includemain() int a; float x; a=35; x=42.63; printf(%fn,a+x); printf(%fn,x/a);程序运行结果程序运行结果: 77.630001 1.218000自动将自动将X的的数据转换成数据转换成 double 型,再将型,再将 int

14、 型型变量变量a数据转换成数据转换成 double 型型,进行加法运算,进行加法运算,运算运算结果为结果为double型型 7.7.数据类型强制转换数据类型强制转换数据类型允许强制转换数据类型允许强制转换, ,一般格式为:一般格式为: ( (数据类型数据类型)()(表达式表达式) )例如例如: : (int)(x + y) /*将将 x+y 的结果转换成的结果转换成 int 型型*/(1)(1)当被转换的表达式是一个简单表达式时,外面当被转换的表达式是一个简单表达式时,外面的一对圆括号可以缺省。的一对圆括号可以缺省。例如例如: :(double)a /*将变量将变量a的值转换成的值转换成dou

15、ble型型*/(float)5/2 (等价于(等价于(float)(5)/2) /*将将5转换成实型再除以转换成实型再除以2(=2.5)*/(float)(5/2) / /* *将将5 5整除整除2 2的结果的结果:2,:2,转换成实型数:转换成实型数:2.02.0* */ /(2)(2)强制转换类型得到的是一个所需类型的中间量,原强制转换类型得到的是一个所需类型的中间量,原表达式类型并不发生变化。表达式类型并不发生变化。例如,例如,(double)a 只是将变量只是将变量a a的值转换成一个的值转换成一个double型的中间量,其数型的中间量,其数据类型并未转换成据类型并未转换成double

16、型。型。例例4.3 数据类型强制转换数据类型强制转换#includemain() int a; float x,y; a=85; x=42.6; y=19.3; printf(“1-%ft, (float)5/2 ); printf(“2-%fn, (float)(5/2); printf(“3-%dt, (int)(x + y) ); printf(“4-%fn, (double)a );程序运行结果:程序运行结果: 1-2.500000 2-2.000000 3-61 4-85.0000004.3 4.3 赋赋 值值 运运 算算 1.1.赋值运算赋值运算 赋值运算符赋值运算符: : “ =

17、 ” ,它的作用是将一个表达式的,它的作用是将一个表达式的值赋给一个变量。值赋给一个变量。 给变量赋值的一般形式为:给变量赋值的一般形式为:变量变量 = 表达式表达式 2 2赋值运算符的优先级赋值运算符的优先级 赋值运算符的优先级低于算术运算符,也低于关赋值运算符的优先级低于算术运算符,也低于关系运算符和逻辑运算符。系运算符和逻辑运算符。 3 3赋值运算结合方向赋值运算结合方向 赋值运算结合方向:自右向左结合。赋值运算结合方向:自右向左结合。4.4.赋值表达式赋值表达式由赋值运算符或复合赋值运算符,将一个变量和一由赋值运算符或复合赋值运算符,将一个变量和一个表达式连接起来的表达式,称为赋值表达

18、式。个表达式连接起来的表达式,称为赋值表达式。(1)赋值表达式赋值表达式一般格式一般格式 变量变量 赋值运算符赋值运算符 表达式表达式 例如,例如, a = 5 、 b=x+3*y(2)赋值表达式的值)赋值表达式的值任何一个表达式都有一个值,赋值表达式也不例外。任何一个表达式都有一个值,赋值表达式也不例外。被赋值变量的值,就是赋值表达式的值。被赋值变量的值,就是赋值表达式的值。例如,例如,a = 5 赋值表达式,变量赋值表达式,变量a的值的值是是 赋值表达式的值赋值表达式的值是是 。 例如,例如,int x; float y; x = 5 y = (float)5 / 2 如果表达式值的类型,

19、与被赋值变量的类型不一如果表达式值的类型,与被赋值变量的类型不一致,但都是数值型或字符型时,系统自动地将表达式致,但都是数值型或字符型时,系统自动地将表达式的值转换成被赋值变量的数据类型,然后再赋值给变的值转换成被赋值变量的数据类型,然后再赋值给变量。量。 表达式表达式 x = 5 的值的值: : 5 变量变量 x 的值的值: : 5 表达式表达式 y = (float)5 / 2 的值的值: : 2 .500000 变量变量 y 的值的值: : 2 .500000 (3)赋值运算结合方向:右赋值运算结合方向:右左左例如例如: : x = y = 65 等价于等价于 x = ( y = 65

20、) 操作数操作数 y 是先与是先与右右边的运算符结合,即边的运算符结合,即 先将先将 65 赋值给变量赋值给变量 y 变量变量 y 的的值是值是 65 表达式表达式 y = 65 的的值是值是 65 再做再做左左边边赋值运算,赋值运算,即即 将将表达式表达式 y = 65的的值值65, 赋值给变量赋值给变量 x 变量变量 x 的的值是值是 65 表达式表达式 x = y = 65 的的值是值是 65 5.5.复合赋值运算复合赋值运算 复合赋值运算符复合赋值运算符:是由赋值运算符之前再加一个双目是由赋值运算符之前再加一个双目运算符构成的。运算符构成的。 (1)复合赋值运算的一般格式为:复合赋值运

21、算的一般格式为: 变量变量 双双 目目 运运 算算 符符 = 表达式表达式 复合赋值运算符复合赋值运算符它等价于:它等价于: 变量变量 = 变量变量 双目运算符双目运算符 (表达式表达式) 例如:例如: y *= x + 6 等价于等价于 y=y * (x+6) 不是不是 y=y * x+6 当表达式为简单表达式时,表达式外的一对圆括号当表达式为简单表达式时,表达式外的一对圆括号才可缺省,否则可能出错。才可缺省,否则可能出错。 例如:例如: x+=a 等价于等价于 x=x + a x/=3 等价于等价于 x=x/3 (2) 10种复合赋值运算符种复合赋值运算符C语言规定的语言规定的10种复合赋

22、值运算符如下:种复合赋值运算符如下:复合算术运算符复合算术运算符: += -= *= /= %=复合位运算符复合位运算符: &= = |= = 例例4.4 输出输出复合赋值运算结果。复合赋值运算结果。main() int x, y, m; x=10; y=3; m= 24; m/= x 4 ; printf(“%dn” ,m); printf(“%fn”,(float)x/y); x=1; y*=x+2; printf(“%d-%dn”, x/y, x%y); 运行结果:运行结果: 4 3.333333 0-1m = m / (x 4) ;例例4.5 输出多个算术表达式的结果输出多个算

23、术表达式的结果#includemain() int a,b; a=5; b=8; printf(“a1=%d ,a2=%d n,a+b,a+=b); printf(“a3=%dn, a);程序运行结果程序运行结果: a1=21, a2=13 a3=13先运算先运算ab的的 值是值是13,变量变量a的值是的值是13再运算再运算a+b的值的值 是是21注意:输出对象中含有赋注意:输出对象中含有赋值表达式(从右向左)值表达式(从右向左)例例4.6 输出多个算术表达式的结果输出多个算术表达式的结果#includemain() int a,b; a=5; b=8; printf(“a1=%d ,a2=%

24、d n,a+=b,a+=3);程序运行结果程序运行结果:a1=16, a2=8赋值表达式也可以包含复合的赋值运算符赋值表达式也可以包含复合的赋值运算符#includemain() int a; a=12; printf(“a=%dn”, a+=a-=a*a);程序运行结果程序运行结果: a=-264求解(求解(1 1)先计算)先计算“a-=a*a”,相当于,相当于a=a-aa=a-a* *a=12-144=-132;a=12-144=-132;(2)(2)再计算再计算“a+=a”(a=-132a=-132), ,相当于相当于a=a+(-132)=-264.a=a+(-132)=-264.4.4

25、 4.4 关关 系系 运运 算算1.1.关系运算符及其优先次序关系运算符及其优先次序(1) 关系运算符(关系运算符(6种关系运算符)种关系运算符) (小于小于) (大于大于) = (大于或等于大于或等于) = (等于等于) != (不等于不等于)注意:在语言中,注意:在语言中,“等于等于”关系运算符是双等号关系运算符是双等号“= =”,而不是单等号,而不是单等号“= ”(赋值运算符)。(赋值运算符)。 例如:例如: a=18 该表达式是赋值表达式该表达式是赋值表达式 a=18 该表达式是关系表达式该表达式是关系表达式 (变量变量a是否等于是否等于18)(2)关系运算符关系运算符优先级优先级与与

26、结合方向结合方向在关系运算符中:在关系运算符中: = 4个优先级相同;个优先级相同; = != 2个也相同,个也相同,且前且前4个高于后个高于后2个。个。结合方向是结合方向是“自左至右自左至右”。(3) 关系运算符与其它运算符关系运算符与其它运算符关系运算符的优先级低于算术运算符;关系运算符的优先级低于算术运算符;关系运算符的优先级高于赋值运算符关系运算符的优先级高于赋值运算符 。3种运算符优先级从高到低为种运算符优先级从高到低为:算术运算符算术运算符 关系运算符关系运算符 赋值运算符赋值运算符 2. 关系表达式 (1) 关系表达式关系表达式 关系表达式关系表达式是指,用关系运算符将两个表达式

27、连接是指,用关系运算符将两个表达式连接起来,进行关系运算的式子。起来,进行关系运算的式子。 例如,下面的关系表达式都是合法的:例如,下面的关系表达式都是合法的: ab, a+bc-d, (a=3)=b, (ab)= =(bc) (2) 关系表达式的值关系表达式的值 语言中没有逻辑型数据。在语言中:语言中没有逻辑型数据。在语言中: 当关系表达式表示的含意为当关系表达式表示的含意为“逻辑真逻辑真” ,其值为,其值为 1; 当关系表达式表示的含意为当关系表达式表示的含意为“逻辑假逻辑假” ,其值为,其值为。 例如,假设例如,假设n1=3,n2=4,n3=5,则:则: n1n2 表达式的值:表达式的值

28、:0。 (n1n2)!=n3 表达式的值:表达式的值:1。 n1n2n3 表达式的值:表达式的值:1。 思考思考:任意改变:任意改变n1或或n2的值,会影响整个表达式的的值,会影响整个表达式的值吗?为什么?值吗?为什么?再次强调:再次强调:C语言用整数语言用整数“1”表示表示“逻辑真逻辑真”,用整,用整数数“0”表示表示“逻辑假逻辑假”。 (3) 关系表达式的值,还可以参与其它种类的运算关系表达式的值,还可以参与其它种类的运算,例如算术运算、逻辑运算等。例如算术运算、逻辑运算等。 (n1n2)+n3 表达式的值:表达式的值:6 因为因为n1=1 n=0) & (x31 表达式的值:表达

29、式的值: 1 (x5) 表达式的值:表达式的值: 0 要注意数学上的不等式转化为要注意数学上的不等式转化为C语言表达式时语言表达式时的正确表示方法。的正确表示方法。数学不等式:数学不等式:b x a正确的正确的C表达式:表达式: x=b&x=a不正确的表达式形式:不正确的表达式形式: b=x11.564 & b31 表达式的值:表达式的值: 1 (b5) 表达式的值:表达式的值: 1(2)在计算逻辑表达式时,只有在必须执行下一个表)在计算逻辑表达式时,只有在必须执行下一个表达式才能求解时,才求解该表达式,即达式才能求解时,才求解该表达式,即并不是所有的表并不是所有的表达式都被求

30、解。达式都被求解。 1)逻辑与运算,如果第一个操作数被判定为)逻辑与运算,如果第一个操作数被判定为“假假”,系统不再判定或求解第二操作数。系统不再判定或求解第二操作数。 2)逻辑或运算,如果第一个操作数被判定为)逻辑或运算,如果第一个操作数被判定为“真真”,系统不再判定或求解第二操作数。系统不再判定或求解第二操作数。 例如例如: 设设 n1=6, n2=9, x=2, y=2 求解表达式求解表达式 (x=n1n2)&(y=n2n1) 后,后, x 的值的值 为:,为:, y 的值不变,仍等于的值不变,仍等于2 求解表达式求解表达式 (x=n1n2) (y=n2n1) 后,后, x 的值

31、的值 为:,为:, y 的值为:的值为: 1例例4.6 复杂表达式的计算顺序复杂表达式的计算顺序 #include main() int a=10, b=15, c=14, temp; temp= a+6b & b-cc; /*/ printf(a+6b & b -cc = %dn,temp); temp=!a+b*c-b/a & b-a *!(c-a); /* */ printf(!a+b*c-b/a & b-a*!(c-a)= %dn,temp); 结果为:a+6b & b -cc =0!a+b*c-b/a & b-a*!(c-a)=14.6

32、 4.6 自自 增增 自自 减减 运运 算算1. 自增(自增(+)、自减()、自减(-)运算)运算 自增运算使单个变量的值增,自增运算使单个变量的值增, 自减运算使单个变量的值减。自减运算使单个变量的值减。2.用法与运算规则用法与运算规则 (1)前置运算前置运算运算符放在变量之前:变量、运算符放在变量之前:变量、变量变量,先使变量的值增(或减),然后再以变化后的值先使变量的值增(或减),然后再以变化后的值参与其它运算,即参与其它运算,即先增、减先增、减, 后运算后运算。 (2)后置运算后置运算运算符放在变量之后:变量、变运算符放在变量之后:变量、变量,变量先参与其它运算,然后再使变量的值增(或

33、量,变量先参与其它运算,然后再使变量的值增(或减),即减),即先运算,后增、减先运算,后增、减。(3)结合方向:右结合方向:右左左3.自增、自减运算说明自增、自减运算说明(1)自增、自减运算符只能用于变量,不能用于常自增、自减运算符只能用于变量,不能用于常量和表达式。该变量可以是整型,也可以是实型。量和表达式。该变量可以是整型,也可以是实型。 例如,例如,5+、-(a+b) 等都是非法等都是非法的。的。(2)自增、自减运算,常用于循环语句中,使循环自增、自减运算,常用于循环语句中,使循环控制变量加(或减),以及指针变量中,使指针指向控制变量加(或减),以及指针变量中,使指针指向下(或上)一个地

34、址。下(或上)一个地址。 (3)负值运算符和自增、自减运算符优先级相同,负值运算符和自增、自减运算符优先级相同,结合方向都是自右向左。结合方向都是自右向左。表达式:表达式:a+a+等价于表达式:(等价于表达式:(a+a+)(4)C编译在处理运算符的组合时,尽可能多的编译在处理运算符的组合时,尽可能多的自左向右将若干个符号组成一个运算符。自左向右将若干个符号组成一个运算符。例:表达式:例:表达式: a+a+a+aa+a+a+a等价于表达式:等价于表达式: (a+a+)+ +(a+a+)+ +(a+a+)+a+a(5)在表达式中,连续使同一变量进行自增或自在表达式中,连续使同一变量进行自增或自减运

35、算时,很容易出错,所以最好避免这种用法。减运算时,很容易出错,所以最好避免这种用法。例:例: #include #include “stdio.hstdio.h”main() main() int a=6,b; int a=6,b; b=a+12; b=a+12;printf(printf(“a=%d,b=%dna=%d,b=%dn”,a,b);,a,b); 程序结果:程序结果:a=7, b=18改为:改为: b=+a+12;b=+a+12;a=7, b=19例例4.7 求下列表达式的值求下列表达式的值设设 int a, b; a=3; b=4; (1) +a + b+ 变量变量a: 4 ,

36、表达式值:表达式值:8 , 变量变量b: 5 (2) a+a+a 等价于等价于 (a+)+(a+)+a 表达式值:表达式值: 9 , 变量变量a: 5 (3) a + (+a) + (+a) 变量变量a: 5 , 表达式值表达式值: 15 例例4.8 自增自减运算符的用法与运算规则示例自增自减运算符的用法与运算规则示例main() int x=6, y; printf(x=%dn,x); /*输出输出x的初值的初值*/ y =+x; /*前置运算前置运算*/ printf(y=+x: x=%d,y=%dn,x,y); y = x - - ; /*后置运算后置运算*/ printf(y=x-:

37、x=%d,y=%dn,x,y); 程序运行结果程序运行结果: x=6 y=+x: x=7,y=7 y=x-: x=6, y=7 例例4.9 由自增自减组成的表达式由自增自减组成的表达式#includemain() int a; float x; a=16; x=12.6; printf(a1=%d,a2=%d,a3=%dn,a+,a+,a+); printf(a=%dn,a); printf(x1=%f,x2=%f,x3=%fn,-x,-x,-x);程序运行结果程序运行结果: a1=18,a2=17,a3=16 a=19 x1=9.600000,x2=10.600000,x3=11.600000例例4.10 由自增自减组成的表达式由自增自减组成的表达式 main() int a, b; float x, y; a=16; x=12.6; +a; +x; printf(1- a=%d,x=%fn,a,x); a+; x+; printf(2- a=%d,x=%fn,a,x); b=a+; y=x+; printf(3- b=%d,y=%fn,b,y); printf(4- a=%d,x=%fn,a,x); 程序运行结果程序运行结果: 1- a=17,x=13.600000 2- a=18,x=14.600000 3- b=18,y=14.600000 4- a=19,x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论