《第三章运算符和表达式优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第三章运算符和表达式优秀PPT.ppt(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第三章 运算符和表达式现在学习的是第1页,共53页3.1 3.1 表达式表达式n n表达式的概念表达式的概念 表表表表达达达达式式式式是是是是用用用用运运运运算算算算符符符符与与与与圆圆圆圆括括括括号号号号将将将将操操操操作作作作数数数数连连连连接接接接起起起起来来来来所所所所构构构构成成成成的的的的式子。式子。式子。式子。n n表达式与简单语句表达式与简单语句 在在在在C C语言中,在一个表达式的后面加上分号语言中,在一个表达式的后面加上分号语言中,在一个表达式的后面加上分号语言中,在一个表达式的后面加上分号“;”就构成了简单语句。就构成了简单语句。就构成了简单语句。就构成了简单语句。有意义
2、的简单语句有意义的简单语句有意义的简单语句有意义的简单语句 无无无无意义的简单语句意义的简单语句意义的简单语句意义的简单语句 现在学习的是第2页,共53页3.2 算术运算符算术运算符n n种类及运算种类及运算种类及运算种类及运算:+-*/%+-*/%注意注意注意注意:n n 两两两两个个个个整整整整数数数数相相相相除除除除,结结结结果果果果仍仍仍仍为为为为整整整整数数数数,若若若若有有有有一一一一个个个个数数数数是是是是浮浮浮浮点点点点数数数数,则则则则结结结结果果果果为为为为浮浮浮浮点点点点数据类型。数据类型。数据类型。数据类型。例:例:5/2=2 5/2=2 截去小数截去小数 5/2.0=
3、2.5 5/2.0=2.5n n 取取取取模模模模运运运运算算算算符符符符%实实实实际际际际上上上上是是是是数数数数学学学学运运运运算算算算的的的的求求求求余余余余数数数数运运运运算算算算,其其其其两两两两个个个个操操操操作作作作对对对对象象象象都都都都必必必必须是整数须是整数须是整数须是整数 。例:例:5%2=1 5%2=1 取余数取余数n n “”、“”还还还还可可可可以以以以用用用用做做做做一一一一元元元元运运运运算算算算符符符符。其其其其余余余余操操操操作作作作符符符符均均均均为为为为二二二二元运算符。元运算符。元运算符。元运算符。现在学习的是第3页,共53页n n算术表达式及算术运算
4、符的优先级算术表达式及算术运算符的优先级 算算算算术术术术表表表表达达达达式式式式就就就就是是是是用用用用算算算算术术术术运运运运算算算算符符符符和和和和圆圆圆圆括括括括号号号号将将将将操操操操作作作作数数数数连连连连接起来的式子。接起来的式子。接起来的式子。接起来的式子。算算算算术术术术运运运运算算算算符符符符的的的的优优优优先先先先级级级级与与与与数数数数学学学学基基基基本本本本相相相相同同同同,即即即即先先先先乘乘乘乘除除除除,后加减。取模运算的优先级与乘除相同。后加减。取模运算的优先级与乘除相同。后加减。取模运算的优先级与乘除相同。后加减。取模运算的优先级与乘除相同。一元算术运算符的优
5、先级高于二元算术运算符。一元算术运算符的优先级高于二元算术运算符。一元算术运算符的优先级高于二元算术运算符。一元算术运算符的优先级高于二元算术运算符。现在学习的是第4页,共53页 注意:注意:n n 算术表达式应能正确的表达数学公式。算术表达式应能正确的表达数学公式。例如:例如:数学表达式是数学表达式是数学表达式是数学表达式是 3+x 3+x 2a 2a 相应的相应的相应的相应的C C C C语言表达式应该是什么呢?语言表达式应该是什么呢?语言表达式应该是什么呢?语言表达式应该是什么呢?n n 算术表达式的结果应该不超过其所能表示算术表达式的结果应该不超过其所能表示 的数的范围。的数的范围。现
6、在学习的是第5页,共53页n n算术运算符的结合性算术运算符的结合性 运运算算符符的的结结合合性性是是指指如如果果一一个个操操作作数数左左边边和和右右边边的的两两个个运运算算符符的的优优先先级级相相同同,应应该该优先计算的操作符。优先计算的操作符。例如:例如:例如:例如:a+b-ca+b-c C语语言言规规定定二二元元算算术术运运算算符符的的结结合合性性是是自左至右。自左至右。现在学习的是第6页,共53页3.3 增增1/减减1运算符运算符 n n类型:类型:类型:类型:+、-。n n这这这这两两两两个个个个运运运运算算算算符符符符都都都都是是是是单单单单目目目目运运运运算算算算符符符符,其其其
7、其功功功功能能能能分分分分别别别别是是是是将将将将变变变变量自身的内容增量自身的内容增量自身的内容增量自身的内容增1 1和减和减和减和减1 1。n n+i+i和和和和-i-i是前缀表示法,是前缀表示法,是前缀表示法,是前缀表示法,i+i+和和和和i-i-是后缀表示法。是后缀表示法。是后缀表示法。是后缀表示法。n n若若若若直直直直接接接接在在在在+i+i和和和和i+i+的的的的后后后后面面面面加加加加上上上上分分分分号号号号构构构构成成成成C C的的的的执执执执行行行行语句,即语句,即语句,即语句,即+i;+i;和和和和i+;i+;前缀与后缀并无区别。前缀与后缀并无区别。前缀与后缀并无区别。前
8、缀与后缀并无区别。n n但是,将它们用在表达式中则前缀与后缀是有区别的。但是,将它们用在表达式中则前缀与后缀是有区别的。但是,将它们用在表达式中则前缀与后缀是有区别的。但是,将它们用在表达式中则前缀与后缀是有区别的。现在学习的是第7页,共53页前前缀缀表表示示法法是是先先将将i值值增增/减减1,再再在在表表达达式式中中使使用用;而而后后缀缀表表示示法法是是先先在在表表达达式式中中使使用用i的的值值,再再将将i值值增增/减减1。例如:例如:i=3;i=3;j=i+;j=+i;结果:结果:j的内容为的内容为3j的内容为的内容为4i的内容为的内容为4i的内容为的内容为4现在学习的是第8页,共53页注
9、意:注意:n n增增增增1/1/1/1/减减减减1 1 1 1运算符的操作对象是一个变量运算符的操作对象是一个变量运算符的操作对象是一个变量运算符的操作对象是一个变量 2+2+2+2+、-2-2-2-2以及以及以及以及(x/y)+(x/y)+(x/y)+(x/y)+均为非法均为非法均为非法均为非法n n增增增增1/1/1/1/减减减减1 1 1 1运运运运算算算算符符符符的的的的优优优优先先先先级级级级高高高高于于于于算算算算术术术术运运运运算算算算符符符符,与与与与单单单单目目目目运运运运算算算算符符符符-(-(-(-(取取取取负负负负)、!(!(!(!(逻逻逻逻辑辑辑辑非非非非)的的的的优
10、优优优先先先先级级级级相相相相同同同同,结结结结合合合合方方方方向向向向自自自自右右右右至左。至左。至左。至左。例:表达式例:表达式例:表达式例:表达式 -i+-i+-i+-i+等价于等价于等价于等价于 -(i+)-(i+)-(i+)-(i+)n n副副副副作作作作用用用用:printf(“%d printf(“%d printf(“%d printf(“%d,%d”,i,i+);,%d”,i,i+);,%d”,i,i+);,%d”,i,i+);在在在在不不不不同同同同的的的的编编编编译译译译环环环环境境境境下结果有可能不同。下结果有可能不同。下结果有可能不同。下结果有可能不同。n n尽尽尽尽
11、量量量量不不不不要要要要在在在在一一一一般般般般的的的的表表表表达达达达式式式式中中中中将将将将增增增增1/1/1/1/减减减减1 1 1 1运运运运算算算算符符符符与与与与其其其其它它它它运运运运算符混合使用。算符混合使用。算符混合使用。算符混合使用。现在学习的是第9页,共53页main()int a=2,b,c;b=a+;c=a+1;printf(%d,%d,%dn,a,b,c);例:判断运行结果现在学习的是第10页,共53页3.3.1 关系运算符关系运算符n n关系运算,就是比较两个数值的大小的运算符。关系运算,就是比较两个数值的大小的运算符。关系运算,就是比较两个数值的大小的运算符。关
12、系运算,就是比较两个数值的大小的运算符。n n关系运算符:关系运算符:关系运算符:关系运算符:、=、=z;j=xyz;k=(x=y);printf(%d,%d,%d,i,j,k);现在学习的是第14页,共53页例例 int a=3,b=2,c=1,d,f;ab (ab)=c b+cb f=abc/表达式值表达式值1/表达式值表达式值1/表达式值表达式值0/d=1/f=0现在学习的是第15页,共53页例例 5278 5278在在C C中是允许的,中是允许的,值为值为0例 int i=1,j=7,a;a=i+(j%4!=0);则a=2例 a0 结果为 A100 结果为10现在学习的是第16页,共5
13、3页3.3.2 逻辑运算符逻辑运算符 n n如如如如果果果果将将将将“与与与与、或或或或、非非非非”运运运运算算算算应应应应用用用用于于于于逻逻逻逻辑辑辑辑值值值值(逻逻逻逻辑辑辑辑真真真真和和和和逻逻逻逻辑辑辑辑假)则称为逻辑运算。假)则称为逻辑运算。假)则称为逻辑运算。假)则称为逻辑运算。n nC C语言中的逻辑运算符有三个:语言中的逻辑运算符有三个:语言中的逻辑运算符有三个:语言中的逻辑运算符有三个:逻辑与逻辑与逻辑与逻辑与&、逻辑或、逻辑或、逻辑或、逻辑或|和逻辑非!和逻辑非!和逻辑非!和逻辑非!n n 其中逻辑与和逻辑或是二元运算符,而逻辑非是一元运算符。其中逻辑与和逻辑或是二元运算
14、符,而逻辑非是一元运算符。其中逻辑与和逻辑或是二元运算符,而逻辑非是一元运算符。其中逻辑与和逻辑或是二元运算符,而逻辑非是一元运算符。现在学习的是第17页,共53页逻逻辑辑运运算算的的规规则则与与二二进进制制的的位位逻逻辑辑是是相相似似的。逻辑运算的规则下表:的。逻辑运算的规则下表:现在学习的是第18页,共53页n nC语语言言系系统统对对任任何何非非0值值都都认认定定为为是是逻逻辑辑真真,而将而将0认定为逻辑假。认定为逻辑假。n n但但注注意意,系系统统逻逻辑辑运运算算的的结结果果仍仍然然只只有有两两个个:1(逻辑真)和(逻辑真)和0(逻辑假)。(逻辑假)。n n逻辑运算符经常与关系运算符一
15、起使用。逻辑运算符经常与关系运算符一起使用。例例:C C语语言言表表达达式式(x=10)&(x=10)&(x=100)的的数数学学含义是:含义是:1010 x x100100 现在学习的是第19页,共53页n n逻辑运算符的优先级逻辑运算符的优先级 !&|高高 低低n n!的的优优先先级级高高于于算算术术运运算算符符(当当然然也也高高于于关关系系运运算算符符),&和和|的的优优先先级级低低于于算算术术运运算算符和关系运算符。符和关系运算符。n n!单单目目运运算算符符,其其结结合合性性是是自自右右至至左左;&和和|的结合性是自左至右。的结合性是自左至右。n n例:计算表达式例:计算表达式79-
16、!079-!0的值的值 现在学习的是第20页,共53页 注意注意:在在C C语语言言中中,如如果果逻逻辑辑运运算算符符的的左左操操作作数数已已经经能能够够确确定定表表达达式式的的解解,则则系系统统不不再再计计算右操作数的值。算右操作数的值。例例:int x=2,y=1,i,j;int x=2,y=1,i,j;i=(x=1&y=1);i=(x=1&y=1);j=(x=2|y=2);j=(x=2|y=2);printf(“%d,%d”,i,j);printf(“%d,%d”,i,j);现在学习的是第21页,共53页 C C语语语语言言言言中中中中提提提提供供供供的的的的唯唯唯唯一一一一的的的的一一
17、一一个个个个三三三三目目目目运运运运算算算算符符符符就就就就是是是是条条条条件件件件运运运运算算算算符符符符“?:?:?:?:”,它的运算对象有三个。,它的运算对象有三个。,它的运算对象有三个。,它的运算对象有三个。条件运算符的语法格式是:条件运算符的语法格式是:条件运算符的语法格式是:条件运算符的语法格式是:表达式表达式表达式表达式1 1?表达式?表达式?表达式?表达式2 2:表达式:表达式:表达式:表达式3 3 包包包包括括括括了了了了条条条条件件件件运运运运算算算算符符符符的的的的条条条条件件件件表表表表达达达达式式式式的的的的计计计计算算算算方方方方法法法法是是是是:首首首首先先先先计
18、计计计算算算算表表表表达达达达式式式式1 1的的的的值值值值,若若若若表表表表达达达达式式式式1 1为为为为真真真真,条条条条件件件件表表表表达达达达式式式式的的的的解解解解取取取取表表表表达达达达式式式式2 2的的的的值值值值,表表表表达达达达式式式式1 1为为为为假假假假,条条条条件件件件表表表表达达达达式式式式的的的的解解解解取取取取表表表表达达达达式式式式3 3的值。的值。的值。的值。3.5 条件运算符条件运算符 现在学习的是第22页,共53页n n例例例例:ab?a:b:ab?a:b 当当当当abab时,表达式的值为时,表达式的值为时,表达式的值为时,表达式的值为a a,否则为,否则
19、为,否则为,否则为b bn n例例例例:c=ab?a:b:c=ab?a:b 将将将将a a和和和和b b中比较大的值赋给中比较大的值赋给中比较大的值赋给中比较大的值赋给c c。条件运算符条件运算符 现在学习的是第23页,共53页例:例:用条件表达式求三个整数中的最大数。用条件表达式求三个整数中的最大数。#include stdio.h#include stdio.h/*max of a/*max of a、b b、c */c */void main()void main()int a,b,c;int a,b,c;printf(Pleae input three int:);printf(Ple
20、ae input three int:);scanf(%d%d%d,&a,&b,&c);scanf(%d%d%d,&a,&b,&c);printf(Max is%d printf(Max is%d ,(ab?a:b)c)?(ab?a:b):c);,(ab?a:b)c)?(ab?a:b):c);现在学习的是第24页,共53页例:将输入的字母小写变大写。例:将输入的字母小写变大写。#include stdio.h#include stdio.h#include string.h#include string.hvoid main()void main()char c;char c;puts(ple
21、ase input one char:);puts(please input one char:);c=getchar();c=getchar();c=(c=a?(c+A-a):c);c=(c=a?(c+A-a):c);putchar(c);putchar(c);putchar(n);putchar(n);现在学习的是第25页,共53页3.6 3.6 数据类型间的转换数据类型间的转换n n 自动转换自动转换 n n 强制转换强制转换 现在学习的是第26页,共53页自动转换自动转换 自自自自动动动动转转转转换换换换:就就就就是是是是系系系系统统统统根根根根据据据据规规规规则则则则自自自自动动动动
22、将将将将两两两两个个个个不不不不同同同同数数数数据据据据类型的运算对象转换成同一种数据类型的过程。类型的运算对象转换成同一种数据类型的过程。类型的运算对象转换成同一种数据类型的过程。类型的运算对象转换成同一种数据类型的过程。原则:低数据类型转化为高数据类型。原则:低数据类型转化为高数据类型。原则:低数据类型转化为高数据类型。原则:低数据类型转化为高数据类型。现在学习的是第27页,共53页n n例:例:1、int i;float f;f8i -float 2、int i;char c;c+i -int现在学习的是第28页,共53页强制转换强制转换 在在在在C C语语语语言言言言中中中中,允允允允
23、许许许许程程程程序序序序员员员员根根根根据据据据自自自自己己己己的的的的意意意意愿愿愿愿将将将将一一一一种种种种数数数数据类型强制转换成另一种数据类型。据类型强制转换成另一种数据类型。据类型强制转换成另一种数据类型。据类型强制转换成另一种数据类型。强制转换的格式为:强制转换的格式为:强制转换的格式为:强制转换的格式为:(数据类型名数据类型名数据类型名数据类型名)操作对象操作对象操作对象操作对象 注注注注意意意意,强强强强制制制制转转转转换换换换并并并并不不不不改改改改变变变变操操操操作作作作对对对对象象象象的的的的数数数数据据据据类类类类型型型型和和和和数数数数值值值值。例例例例如如如如,(i
24、nt)f(int)f的的的的确确确确切切切切含含含含义义义义是是是是将将将将f f转转转转换换换换成成成成为为为为整整整整型型型型值值值值参参参参与与与与运运运运算算算算,而而而而f f本身的数据类型和数值都没有任何改变。本身的数据类型和数值都没有任何改变。本身的数据类型和数值都没有任何改变。本身的数据类型和数值都没有任何改变。现在学习的是第29页,共53页n n比较:比较:(float)i+3 和和 (float)(i+3)n n建议:建议:任何情况下都对实行类型转换的表达式任何情况下都对实行类型转换的表达式使用括号。使用括号。现在学习的是第30页,共53页3.7 3.7 赋值运算符赋值运算
25、符 n n普通赋值运算符普通赋值运算符 赋值表达式的一般形式是:赋值表达式的一般形式是:变量名变量名=表达式表达式 赋值语句的一般形式是:赋值语句的一般形式是:变量名变量名=表达式;表达式;赋值运算符的优先级小于算术运算符。赋值运算符的优先级小于算术运算符。赋值运算符的结合性是自右至左,赋值运算符的结合性是自右至左,例:例:a=b=2 现在学习的是第31页,共53页n n注意:赋值运算符的类型是被赋值的变量的类型,若两端类型不同,会发生类型换。无法赋值给常量和表达式 例:5=a+8,a+2=c+3,是非法的。赋值运算符右边的表达式还可以是一个赋值表达式,构成多重赋值。例:a=b=2现在学习的是
26、第32页,共53页n n例:计算下列表达式的值:int a,b;a=3;a=3;a=1;b=0;b=0;b=1;/a=3/表达式值表达式值1/表达式值表达式值0/表达式值表达式值1/表达式值表达式值0/b=0现在学习的是第33页,共53页n n复合赋值运算符复合赋值运算符 把把把把赋赋赋赋值值值值运运运运算算算算符符符符与与与与算算算算术术术术、位位位位逻逻逻逻辑辑辑辑、移移移移位位位位运运运运算算算算符符符符放放放放在在在在一起,就构成复合赋值运算符。一起,就构成复合赋值运算符。一起,就构成复合赋值运算符。一起,就构成复合赋值运算符。复复复复合合合合算算算算术术术术赋赋赋赋值值值值运运运运算
27、算算算符符符符有有有有5 5个个个个+=+=、-=、*=*=、/=/=、%=%=。还还还还有有有有与与与与移移移移位位位位和和和和位位位位逻逻逻逻辑辑辑辑结结结结合合合合的的的的复复复复合合合合赋赋赋赋值值值值运运运运算算算算符符符符5 5个个个个(=、&=&=、=、|=|=)。)。)。)。复合赋值运算符的使用规则是:复合赋值运算符的使用规则是:复合赋值运算符的使用规则是:复合赋值运算符的使用规则是:Xop=YXop=YXop=YXop=Y与与与与X=XopYX=XopYX=XopYX=XopY等价。等价。等价。等价。现在学习的是第34页,共53页例:例:#include stdio.hvoi
28、d main()int c;/*char c;*/c=B;printf(c=%c,c+a-A);现在学习的是第35页,共53页3.8 位逻辑运算符位逻辑运算符n n类型:类型:类型:类型:&、|、n n功功功功能能能能:按按按按位位位位与与与与、按按按按位位位位或或或或、按按按按位位位位异异异异或或或或、左左左左移移移移、右右右右移移移移、按按按按位取反位取反位取反位取反n n操操操操作作作作数数数数在在在在实实实实现现现现位位位位操操操操作作作作时时时时按按按按二二二二进进进进制制制制进进进进行行行行运运运运算算算算,一一一一般般般般应为无符号型整数。应为无符号型整数。应为无符号型整数。应为
29、无符号型整数。n n除除除除是一元运算符,其它的都是二元运算符是一元运算符,其它的都是二元运算符是一元运算符,其它的都是二元运算符是一元运算符,其它的都是二元运算符现在学习的是第36页,共53页按位与按位与&按位与的运算规则是:按位与的运算规则是:0&0=00&1=01&0=01&1=1例如:例如:charw1,w2,w3;w1=10;w2=8;w3=w1&w2;w3的内容可以通过下式运算:的内容可以通过下式运算:0000101000001000(按位与(按位与&)00001000(结果)(结果)现在学习的是第37页,共53页&运算经常用于把特定位清零(屏蔽)。运算经常用于把特定位清零(屏蔽)
30、。例如,例如,a的值为的值为11011010,b的值为的值为11110000,a&b11011010&1111000011010000相当于把相当于把a的低的低4位屏蔽,高位屏蔽,高4位不变。位不变。现在学习的是第38页,共53页按位或按位或|按位或的运算规则是:按位或的运算规则是:0|0=0 0|1=1 1|0=1 1|1=1例如:例如:char w1,w2,w3;w1=10;w2=8;w3=w1|w2;w3的内容可以通过下式运算:的内容可以通过下式运算:00001010 00001000 (按位或(按位或|)00001010 (结果)(结果)现在学习的是第39页,共53页|运算经常用于把特
31、定位置运算经常用于把特定位置1 1。例如,例如,a的值为的值为11011010,b的值为的值为11110000,a|b11011010|1111000011111010相当于把相当于把a的高的高4位置位置1 1,低,低4位不变。位不变。现在学习的是第40页,共53页按位异或按位异或按位或的运算规则是:按位或的运算规则是:0 0=0、0 1=1 1 0=1 1 1=0例如:例如:char w1,w2,w3;w1=10;w2=8;w3=w1w2;w3的内容可以通过下式运算:的内容可以通过下式运算:00101010 00011000 (按位异或(按位异或)00110010 (结果)(结果)现在学习的
32、是第41页,共53页按位取反按位取反 按位取反的规则是:按位取反的规则是:0=1 1=0现在学习的是第42页,共53页移位运算符移位运算符n n左移左移左移左移 n n双双双双目目目目运运运运算算算算符符符符,运运运运算算算算符符符符右右右右边边边边的的的的表表表表达达达达式式式式表表表表示示示示移移移移位位位位的的的的位位位位数数数数。例:例:例:例:x=x2 x=x2 表示把表示把表示把表示把x x进行左移进行左移进行左移进行左移2 2位后赋值给位后赋值给位后赋值给位后赋值给x x。n n左左左左移移移移运运运运算算算算规规规规则则则则:将将将将操操操操作作作作数数数数的的的的每每每每个个
33、个个二二二二进进进进制制制制向向向向左左左左移移移移动动动动若若若若干干干干位位位位,从从从从左左左左边边边边移移移移出出出出的的的的高高高高位位位位丢丢丢丢失失失失,右右右右边边边边空空空空出出出出的的的的低低低低位补位补位补位补0 0。实实实实际际际际上上上上就就就就是是是是扩扩扩扩大大大大原原原原数数数数的的的的倍倍倍倍数数数数,左左左左移移移移位位位位扩扩扩扩大大大大倍倍倍倍,左左左左移移移移位扩大倍,位扩大倍,位扩大倍,位扩大倍,。现在学习的是第43页,共53页n n右移运算规则:缩小原数的倍数。右移运算规则:缩小原数的倍数。右移运算规则:缩小原数的倍数。右移运算规则:缩小原数的倍数
34、。n n将操作数的每个二进制位向右移动若干位,从右将操作数的每个二进制位向右移动若干位,从右将操作数的每个二进制位向右移动若干位,从右将操作数的每个二进制位向右移动若干位,从右边移出的低位部分丢失。边移出的低位部分丢失。边移出的低位部分丢失。边移出的低位部分丢失。n n右移时,若符号位为,则右边填零。若符号位为,右移时,若符号位为,则右边填零。若符号位为,右移时,若符号位为,则右边填零。若符号位为,右移时,若符号位为,则右边填零。若符号位为,根据机器不同分为算术移位(填充)逻辑移位(填充根据机器不同分为算术移位(填充)逻辑移位(填充根据机器不同分为算术移位(填充)逻辑移位(填充根据机器不同分为
35、算术移位(填充)逻辑移位(填充)。)。)。)。现在学习的是第44页,共53页n n例:int a=8,x,y;x=a2;n n例:int a=-4,x,y;x=a2;现在学习的是第45页,共53页3.9 其它运算符其它运算符逗号运算符逗号运算符 表达式表达式表达式表达式1 1 1 1,表达式,表达式,表达式,表达式2 2 2 2 逗号表达式的求值过程是:先求解表达式逗号表达式的求值过程是:先求解表达式逗号表达式的求值过程是:先求解表达式逗号表达式的求值过程是:先求解表达式1 1 1 1,再求解表达式再求解表达式再求解表达式再求解表达式2 2 2 2,并将表达式,并将表达式,并将表达式,并将表达
36、式2 2 2 2的解作为逗号表达的解作为逗号表达的解作为逗号表达的解作为逗号表达式的解。式的解。式的解。式的解。例如例如例如例如5,6 5,6 的值是的值是的值是的值是6 6 z=(y=3,x*y)z=(y=3,x*y)与与与与z=x*(y=3)z=x*(y=3)是等价是等价是等价是等价 逗号运算符一般用于循环逗号运算符一般用于循环逗号运算符一般用于循环逗号运算符一般用于循环forfor语句,不提倡使语句,不提倡使语句,不提倡使语句,不提倡使用在其它的表达式中。用在其它的表达式中。用在其它的表达式中。用在其它的表达式中。现在学习的是第46页,共53页求字节数运算符求字节数运算符sizeof是一
37、个比较特殊的单目运算符,也是一个比较特殊的单目运算符,也是一个非常有用的运算符,经常用于动态分是一个非常有用的运算符,经常用于动态分配空间。配空间。其语法格式为:其语法格式为:sizeof(表达式表达式)表达式可以是变量名、常量、以及数据表达式可以是变量名、常量、以及数据类型名。类型名。现在学习的是第47页,共53页它的功能是:它的功能是:l求表达式中变量名所代表的存储单元所占的字节数;求表达式中变量名所代表的存储单元所占的字节数;l或是求表达式中常量的存储单元所占的字节数;或是求表达式中常量的存储单元所占的字节数;l或或是是求求表表达达式式中中的的数数据据类类型型表表示示的的数数据据在在内内
38、存存单单元元中中所所占占的的字节数。字节数。例:例:sizeof(int)的结果是的结果是2,sizeof运运算算符符比比较较灵灵活活,同同样样是是求求整整型型int数数据据所所占占的的字字节数,可以使用三种办法:节数,可以使用三种办法:(1)使用使用int a;求求sizeof(a)(2)求求sizeof(10)(3)求求sizeof(int)现在学习的是第48页,共53页n n1、修改程序,使之运行正确#include“stdio.h”void main()doule f;printf(“Enter an double:);scanf(“%d”,f)printf(“f=%fn”,f);练
39、习现在学习的是第49页,共53页n n2、#include stdio.h void main()integer I,j;printf(“Enter an integer:);scanf(“%d”,&i);j=I*I;printf(“I=%d j=%dn,j);现在学习的是第50页,共53页n n3 3、判断运行结果、判断运行结果#include stdio.h#include stdio.h void main()void main()int i,j,k,q;int i,j,k,q;i=9;i=9;j=10;j=10;k=i+;k=i+;q=+j;q=+j;printf(printf(“k=%d,q=%dnk=%d,q=%dn”,k,q);,k,q);现在学习的是第51页,共53页练 习n n1、若给出说明int i=3,j=5;确定下面表达式的值及执行后i和j的值。(1)(i/2)+4 (2)(j%3)*i (3)(i+)-(-j)(4)j=(i+=2)2、求表达式的值 1+2/3+4%5+(67)现在学习的是第52页,共53页作 业n n编写程序输入长方形的长和宽,求长方形的面积和周长并输出,用浮点数据处理。n n编写程序输入三个数,求它们的平均值并输出,用浮点数据处理。现在学习的是第53页,共53页