《C语言第4章数据运算.ppt》由会员分享,可在线阅读,更多相关《C语言第4章数据运算.ppt(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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)简单表达式:表达式中只有一个运算符的表达简单表达式:表达式中只有一个运算符的表达式,被称为普通表达式,或称为简单表达式。式,被称为普通表达式,或称为简单表达式。(2 2)复合表达式:有多个运算符构成的表达式,被复合表达式:有多个运算符构成的表达式,被称为复合表达式。称为复合表达式。(3 3)特
6、殊表达式:在使用中,单个常量、变量和函特殊表达式:在使用中,单个常量、变量和函数(返回值)都可以看作是一个表达式,称为特殊表达式。数(返回值)都可以看作是一个表达式,称为特殊表达式。6.6.表达式求值表达式求值每每一一个个C C的的合合法法表表达达式式 ,经经过过运运算算一一定定能能得得到到一一个确定的数值,这个数值被称为表达式的值。个确定的数值,这个数值被称为表达式的值。复合表达式的求解过程如下复合表达式的求解过程如下:(1)(1)按按运运算算符符的的优优先先级级高高低低次次序序执执行行。例例如如,先先乘除后加减。乘除后加减。(2)(2)如如果果在在一一个个运运算算对对象象(或或称称操操作作
7、数数)两两侧侧的的运运算算符符的的优优先先级级相相同同,则则按按语语言言规规定定的的结结合合方方向向(结合性)进行。(结合性)进行。4.24.2 算算 术术 运运 算算 1.五种基本算术运算符五种基本算术运算符 +(加法加法 )-(减法减法/取负取负 )*(乘法乘法 )/(除法除法 )%(求余数求余数 )2.运算符的优先级与结合性运算符的优先级与结合性(1)算术运算符的优先级)算术运算符的优先级 先先取负取负、再、再乘、除、求余乘、除、求余,最后,最后加、减法加、减法 (2)运算符的结合性为:自左至右的结合方向。)运算符的结合性为:自左至右的结合方向。3.3.算术表达式算术表达式 由由算算术术
8、运运算算符符和和括括号号将将运运算算对对象象连连接接起起来来形形成成的的运算式子,称为算术表达式运算式子,称为算术表达式 例如,例如,3+6*9 、(x+y)/2 14.4.算术表达式的值算术表达式的值除除C C语语言言的的特特定定规规则则外外,C C语语言言中中算算术术运运算算与与数数学学中中的的算算术术运运算算规规则则相相同同,经经过过有有限限次次加加减减除除等等运运算算,最最后后求得表达式的值。求得表达式的值。例如,例如,表达式表达式 3+6*9 的值的值:57 5.C5.C语言算术运算的语言算术运算的特定规则特定规则 (1 1)两两个个整整数数相相除除,其其商商为为整整数数,小小数数部
9、部分分被被舍舍弃弃。例例如如,表表达达式式:5/2 的的值值为为 2 ,不不是是 2.5。而而表达式:表达式:12.6/3的的值为值为4.2 ,不是不是 4。(2 2)关关于于求求余余数数运运算算,要要求求求求余余运运算算符符两两侧侧的的操操作数均为整型数据,否则出错。作数均为整型数据,否则出错。例例如如,表表达达式式:5%3 的的值值为为2。而而5.32出出错错,不是合法不是合法表达式表达式。(3 3)C C语语言言的的整整型型、实实型型和和字字符符型型数数据据间间可可以以混混合合运算。运算。例例4.1 输出算术表达式的结果输出算术表达式的结果#includemain()int a,b,c1
10、;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 型,型,float型必须转型必须转换成换成doubl
11、e型。型。2)纵纵向向向向上上的的箭箭头头,表表示示不不同同类类型型的的转转换换方方向。向。(1)整整型型、实实型型和和字字符符型型数数据据间间可可以以混混合合运运算算(因为字符数据与整型数据可以通用)。(因为字符数据与整型数据可以通用)。一一个个运运算算符符两两侧侧的的操操作作数数的的数数据据类类型型不不同同,则则按按“先先转转换换、后后运运算算”的的原原则则,首首先先将将数数据据自自动动转转换换成成同一类型,然后进行运算。同一类型,然后进行运算。例如,例如,int 型型与与 double 型型数数据据进进行行混混合合运运算算,则则先先将将 int 型型数数据据转转换换成成 double 型
12、型,然然后后在在两两个个同同类类型型的的数数据间进行运算,据间进行运算,结果为结果为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 型变型变量量a数据转换成数据转换成 double 型型,进行加法运算,运
13、算进行加法运算,运算结果为结果为double型型 7.7.数据类型强制转换数据类型强制转换数据类型允许强制转换数据类型允许强制转换,一般格式为:一般格式为:(数据类型数据类型)()(表达式表达式)例如例如:(int)(x+y)/*将将 x+y 的结果转换成的结果转换成 int 型型*/(1)(1)当当被被转转换换的的表表达达式式是是一一个个简简单单表表达达式式时时,外外面面的一对圆括号可以缺省。的一对圆括号可以缺省。例如例如:(double)a /*将变量将变量a的值转换成的值转换成double型型*/(float)5/2 (等价于(等价于(float)(5)/2)/*将将5转换成实型再除以转
14、换成实型再除以2(=2.5)*/(float)(5/2)/*/*将将5 5整除整除2 2的结果的结果:2,:2,转换成实型数:转换成实型数:2.0*/2.0*/(2)(2)强强制制转转换换类类型型得得到到的的是是一一个个所所需需类类型型的的中中间间量量,原原表达式类型并不发生变化。表达式类型并不发生变化。例如,例如,(double)a 只只是是将将变变量量a a的的值值转转换换成成一一个个double型型的的中中间间量量,其其数数据类型并未转换成据类型并未转换成double型。型。例例4.3 数据类型强制转换数据类型强制转换#includemain()int a;float x,y;a=85;
15、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.赋值运算赋值运算 赋值运算符赋值运算符:“=”,它的作用是将一个表达式,它的作用是将一个表达式的值赋给一个变量。的值赋给一个变量。给变量赋值的一般形式为:给变量赋值的一般形式为:变量变量 =表达式表达式 2 2赋值
16、运算符的优先级赋值运算符的优先级 赋值赋值运算符的运算符的优优先先级级低于算低于算术术运算符,也低于关运算符,也低于关系运算符和系运算符和逻辑逻辑运算符。运算符。3 3赋值运算结合方向赋值运算结合方向 赋值赋值运算运算结结合方向:自右向左合方向:自右向左结结合。合。4.4.赋值表达式赋值表达式由由赋赋值值运运算算符符或或复复合合赋赋值值运运算算符符,将将一一个个变变量量和和一一个个表达式连接起来的表达式,称为赋值表达式。表达式连接起来的表达式,称为赋值表达式。(1)赋值表达式赋值表达式一般格式一般格式 变量变量 赋值运算符赋值运算符 表达式表达式 例如,例如,a=5 、b=x+3*y(2)赋值
17、表达式的值)赋值表达式的值任任何何一一个个表表达达式式都都有有一一个个值值,赋赋值值表表达达式式也也不不例例外外。被赋值变量的值,就是赋值表达式的值。被赋值变量的值,就是赋值表达式的值。例如,例如,a=5 赋值表达式,变量赋值表达式,变量a的值的值是是 赋值表达式的值赋值表达式的值是是。例如,例如,int x;float y;x=5 y=(float)5/2 如果表达式值的类型,与被赋值变量的类型不一如果表达式值的类型,与被赋值变量的类型不一致,但都是数值型或字符型时,系统自动地将表达式致,但都是数值型或字符型时,系统自动地将表达式的值转换成被赋值变量的数据类型,然后再赋值给变的值转换成被赋值
18、变量的数据类型,然后再赋值给变量。量。表达式表达式 x=5 的值的值:5 变量变量 x 的值的值:5 表达式表达式 y=(float)5/2 的值的值:2.5 变量变量 y 的值的值:2.5 (3)赋值运算结合方向:右赋值运算结合方向:右左左例如例如:x=y=65 等价于等价于 x=(y=65)操作数操作数 y 是先与是先与右右边的运算符结合,即边的运算符结合,即 先将先将 65 赋值给变量赋值给变量 y 变量变量 y 的的值是值是 65 表达式表达式 y=65 的的值是值是 65 再做再做左左边边赋值运算,赋值运算,即即 将将表达式表达式 y=65的的值值65,赋值给变量赋值给变量 x 变量
19、变量 x 的的值是值是 65 表达式表达式 x=y=65 的的值是值是 65 5.5.复合赋值运算复合赋值运算 复复合合赋赋值值运运算算符符:是是由由赋赋值值运运算算符符之之前前再再加加一一个个双双目目运算符构成的。运算符构成的。(1)复合赋值运算的一般格式为:复合赋值运算的一般格式为:变量变量 双双 目目 运运 算算 符符=表达式表达式 复合赋值运算符复合赋值运算符它等价于:它等价于:变量变量=变量变量 双目运算符双目运算符(表达式表达式)例如:例如:y*=x+6 等价于等价于 y=y*(x+6)不是不是 y=y*x+6 当当表表达达式式为为简简单单表表达达式式时时,表表达达式式外外的的一一
20、对对圆圆括括号号才才可缺省,否则可能出错。可缺省,否则可能出错。例如:例如:x+=a 等价于等价于 x=x+a x/=3 等价于等价于 x=x/3(2)10种复合赋值运算符种复合赋值运算符C语言规定的语言规定的10种复合赋值运算符如下:种复合赋值运算符如下:复合算术运算符复合算术运算符:+=-=*=/=%=复合位运算符复合位运算符:&=|=例例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-%
21、dn”,x/y,x%y);运行结果:运行结果:4 3.333333 0-1m=m/(x 4);4.4 4.4 关关 系系 运运 算算1.1.关系运算符及其优先次序关系运算符及其优先次序(1)关系运算符(关系运算符(6种关系运算符)种关系运算符)(小于小于)(大于大于)=(大于或等于大于或等于)=(等于等于)!=(不等于不等于)注意:在语言中,注意:在语言中,“等于等于”关系运算符是双等号关系运算符是双等号“=”,而不是单等号,而不是单等号“=”(赋值运算符)。(赋值运算符)。例如:例如:a=18 该表达式是赋值表达式该表达式是赋值表达式 a=18 该表达式是关系表达式该表达式是关系表达式 (变
22、量变量a是否等于是否等于18)(2)关系运算符关系运算符优先级优先级与与结合方向结合方向在关系运算符中:在关系运算符中:=4个优先级相同;个优先级相同;=!=2个也相同,个也相同,且前且前4个高于后个高于后2个。个。结合方向是结合方向是“自左至右自左至右”。(3)关系运算符与其它运算符关系运算符与其它运算符关系运算符的优先级低于算术运算符;关系运算符的优先级低于算术运算符;关系运算符的优先级高于赋值运算符关系运算符的优先级高于赋值运算符。3种运算符优先级从高到低为种运算符优先级从高到低为:算术运算符算术运算符 关系运算符关系运算符 赋值运算符赋值运算符 2.关系表达式 (1)关系表达式关系表达
23、式 关关系系表表达达式式是是指指,用用关关系系运运算算符符将将两两个个表表达达式式连连接接起来,进行关系运算的式子。起来,进行关系运算的式子。例如,下面的关系表达式都是合法的:例如,下面的关系表达式都是合法的:ab,a+bc-d,(a=3)=b,(ab)=(bc)(2)关系表达式的值关系表达式的值 语言中没有逻辑型数据。在语言中:语言中没有逻辑型数据。在语言中:当关系表达式表示的含意为当关系表达式表示的含意为“逻辑真逻辑真”,其值为,其值为 1;当关系表达式表示的含意为当关系表达式表示的含意为“逻辑假逻辑假”,其值为,其值为。例如,假设例如,假设n1=3,n2=4,n3=5,则:则:n1n2
24、表达式的值:表达式的值:0。(n1n2)!=n3 表达式的值:表达式的值:1。n1n2n3 表达式的值:表达式的值:1。思思考考:任任意意改改变变n1或或n2的的值值,会会影影响响整整个个表表达达式式的的值吗?为什么?值吗?为什么?再再次次强强调调:C语语言言用用整整数数“1”表表示示“逻逻辑辑真真”,用用整整数数“0”表示表示“逻辑假逻辑假”。(3)关关系系表表达达式式的的值值,还还可可以以参参与与其其它它种种类类的的运运算算,例如算术运算、逻辑运算等。例如算术运算、逻辑运算等。(n1n2)+n3 表达式的值:表达式的值:6 因为因为n1=1 n=0)&(x31 表达式的值:表达式的值:1
25、(x5)表达式的值:表达式的值:0 判断一个年份是否是闰年的逻辑表达式判断一个年份是否是闰年的逻辑表达式:(year%4=0)&(year%100!=0)(year%400=0)例如例如:判断判断1900年是否是闰年:年是否是闰年:先求表达式先求表达式 year%4=0 的值得的值得 1 再求表达式再求表达式 year%100!=0 的值得的值得 0 逻辑表达式逻辑表达式 (year%4=0)&(year%100!=0)的值得的值得 0 还要求表达式还要求表达式 year%400=0 的值得的值得 0 最后求值整个表达式的值得最后求值整个表达式的值得 0 1900年不是闰年年不是闰年6说明说明
26、(1)逻逻辑辑运运算算符符两两侧侧的的操操作作数数,除除可可以以是是和和非非的的整整数数外外,也也可可以以是是其其它它任任何何类类型型的的数数据据,如如实实型型、字字符型等。符型等。例如:例如:float a,b;a=25.28;b=52.78;!a 表达式的值:表达式的值:0 !(A)表达式的值:表达式的值:0 a11.564&b31 表达式的值:表达式的值:1 (b5)表达式的值:表达式的值:1(2)在在计计算算逻逻辑辑表表达达式式时时,只只有有在在必必须须执执行行下下一一个个表表达达式式才才能能求求解解时时,才才求求解解该该表表达达式式,即即并并不不是是所所有有的的表表达式都被求解。达式
27、都被求解。1)逻逻辑辑与与(&)运运算算,如如果果第第一一个个操操作作数数被被判判定定为为“假假”,系统不再判定或求解第二操作数。,系统不再判定或求解第二操作数。2)逻逻辑辑或或(|)运运算算,如如果果第第一一个个操操作作数数被被判判定定为为“真真”,系统不再判定或求解第二操作数。,系统不再判定或求解第二操作数。例如例如:设设 n1=6,n2=9,x=2,y=2 求解表达式求解表达式(x=n1n2)&(y=n2n1)后,后,x 的值的值 为:,为:,y 的值不变,仍等于的值不变,仍等于2 求解表达式求解表达式(x=n1n2)(y=n2n1)后,后,x 的值的值 为:,为:,y 的值为:的值为:
28、1例例4.5 复杂表达式的计算顺序复杂表达式的计算顺序#include main()int a=10,b=15,c=14,temp;temp=a+6b&b-cc;/*temp=0*/printf(a+6b&b-cc=%dn,temp);temp=!a+b*c-b/a&b-a*!(c-a);/*temp=1*/printf(!a+b*c-b/a&b-a*!(c-a)=%dn,temp);4.6 4.6 自自 增增 自自 减减 运运 算算1.自增(自增(+)、自减()、自减(-)运算)运算 自增运算使单个变量的值增,自增运算使单个变量的值增,自减运算使单个变量的值减。自减运算使单个变量的值减。2.
29、用法与运算规则用法与运算规则 (1)前置运算前置运算运算符放在变量之前:变量、运算符放在变量之前:变量、变量变量,先使变量的值增(或减),然后再以变化后的值先使变量的值增(或减),然后再以变化后的值参与其它运算,即参与其它运算,即先增、减先增、减,后运算后运算。(2)后置运算后置运算运算符放在变量之后:变量、变运算符放在变量之后:变量、变量,变量先参与其它运算,然后再使变量的值增(或量,变量先参与其它运算,然后再使变量的值增(或减),即减),即先运算,后增、减先运算,后增、减。(3)结合方向:右结合方向:右左左3.自增、自减运算说明自增、自减运算说明(1)自增、自减运算符,不能用于常量和表达自
30、增、自减运算符,不能用于常量和表达式。式。例如,例如,5+、-(a+b)等都是非法等都是非法的。的。(2)自自增增、自自减减运运算算,常常用用于于循循环环语语句句中中,使使循循环环控控制制变变量量加加(或或减减),以以及及指指针针变变量量中中,使使指指针指向下(或上)一个地址。针指向下(或上)一个地址。(3)在在表表达达式式中中,连连续续使使同同一一变变量量进进行行自自增增或或自减运算时,很容易出错,所以最好避免这种用法。自减运算时,很容易出错,所以最好避免这种用法。例如:例如:a+a+a+b例例4.6 求下列表达式的值求下列表达式的值设设 int a,b;a=3;b=4;(1)+a+b+变量
31、变量a:4 ,表达式值:表达式值:8,变量变量b:5(2)a+a+a 等价于等价于 (a+)+(a+)+a 表达式值:表达式值:9 ,变量变量a:5(3)a+(+a)+(+a)变量变量a:5 ,表达式值表达式值:15二级考题:二级考题:a+=a-=a*a 例例4.7 自增自减运算符的用法与运算规则示例自增自减运算符的用法与运算规则示例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+:x=%d,y=%dn,
32、x,y);程序运行结果程序运行结果:x=6 y=+x:x=7,y=7 y=x-:x=8,y=7 1.条件运算符条件运算符:?:2条件表达式一般格式:条件表达式一般格式:表达式表达式1 1?表达式表达式2 2 :表达式表达式3 3 条件表达式中的条件表达式中的“表达式表达式1”1”、“表达式表达式2”2”、“表表达式达式3”3”的类型,可以各不相同。的类型,可以各不相同。int x,y,a,b;char c;x=56;y=34;a=23;b=32;xy?C=#:x=a+b 4.7 4.7 其其 它它 运运 算算3条件运算规则条件运算规则:如果如果“表达式表达式1”的值为非的值为非0 0值值(即逻
33、辑真即逻辑真),运算结,运算结果等于果等于“表达式表达式2”的值;否则,运算结果等于的值;否则,运算结果等于“表达式表达式3”的值。的值。4条件运算符优先级与结合性条件运算符优先级与结合性 条件运算符的优先级,高于赋值运算符,但低于关条件运算符的优先级,高于赋值运算符,但低于关系运算符和算术运算符。系运算符和算术运算符。其其结合性为结合性为“从右到左从右到左”。例如:例如:xy?x+y:ab?a*b:a+b等价于等价于:xy?x+y:(ab?a-b:a+b)设设 x=5 y=8 a=34 b=12 表达式的表达式的值:值:22 例例4.84.8从从键键盘盘上上输输入入一一个个字字符符,如如果果
34、它它是是大大写写字字母母,则把它转换成小写字母输出;否则,直接输出。则把它转换成小写字母输出;否则,直接输出。main()char ch;printf(Input a character:);scanf(%c,&ch);ch=(ch=A&ch=Z)?(ch+32):ch;printf(ch=%cn,ch);4.逗号运算符逗号运算符(,)及其表达式及其表达式 c 语言提供一种用逗号运算符语言提供一种用逗号运算符“,”连接起来的式连接起来的式子,称为逗号表达式。子,称为逗号表达式。逗号运算符又称顺序求值运算符。逗号运算符又称顺序求值运算符。(1)一般形式一般形式 表达式表达式,表达式表达式,表达式
35、表达式n (2)求解过程求解过程 自自左左至至右右,依依次次计计算算各各表表达达式式的的值值,最最后后一一个个表表达达式的值即为整个逗号表达式的值。式的值即为整个逗号表达式的值。(1)逗号表达式逗号表达式:a=3*5,a*4 的值的值 先求解先求解a=3*5,得,得a=15;再求再求a*4=60,所以逗号表达式的值为:,所以逗号表达式的值为:60。(2)逗号表达式逗号表达式 (a=3*5,a*4),a+5 的值的值 先求解先求解a=3*5,得,得a=15;再求再求a*4=60;最后求解最后求解 a+5=20,所以逗号表达式的值为:,所以逗号表达式的值为:20。注注意意:并并不不是是任任何何地地
36、方方出出现现的的逗逗号号,都都是是逗逗号号运运算算符符。很多情况下,很多情况下,逗号仅用作分隔符逗号仅用作分隔符。例如:。例如:int a,b;a=3;b=4;printf(“%d%dn”,a+b,b+3);6.求字节数运算符求字节数运算符 (1)运算符运算符:sizeof 求字节数运算符与算术运算符的表示形式不同,它求字节数运算符与算术运算符的表示形式不同,它是由字母组成的。是由字母组成的。(2)求字节数表达式的格式:求字节数表达式的格式:sizeof 变量名变量名 该表达式求出变量所占内存存储单元的字节个数,该表达式求出变量所占内存存储单元的字节个数,结果是一个正整型数。结果是一个正整型数。sizeof (数据类型名数据类型名)该表达式求出指定数据类型所需内存存储单元的字该表达式求出指定数据类型所需内存存储单元的字节个数,结果是一个正整型数。节个数,结果是一个正整型数。例如:设例如:设 char a1;sizeof a1 表达式的值表达式的值:1 sizeof (int)表达式的值表达式的值:2 同学们再见同学们再见