《第三章运算符和表达式精选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=2.5 5/
3、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 算术表达式的结果应该不超过其所能表示算术表达式的结果应该不超过其所能表示 的数的范围。的数的范围。第5页,本讲稿共53页n
6、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+;前缀与后缀并无区别。前缀与后缀并无区别。前缀与后缀并无区别。前缀与后缀并无区别。n n但但但但是是
8、是是,将将将将它它它它们们们们用用用用在在在在表表表表达达达达式式式式中中中中则则则则前前前前缀缀缀缀与与与与后后后后缀缀缀缀是是是是有有有有区区区区别别别别的。的。的。的。第7页,本讲稿共53页前前缀缀表表示示法法是是先先将将i值值增增/减减1,再再在在表表达达式式中中使使用用;而而后后缀缀表表示示法法是是先先在在表表达达式式中中使使用用i的的值值,再再将将i值值增增/减减1。例如:例如:i=3;i=3;j=i+;j=+i;结果:结果:j的内容为的内容为3j的内容为的内容为4i的内容为的内容为4i的内容为的内容为4第8页,本讲稿共53页注意:注意:n n增增增增1/1/1/1/减减减减1 1
9、 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关系运算,就是比较两个数值的大小的运算符。关系运算,就是比较两个数值的大小的运算符。关系运算,就是比较两个数值的大小的运算符。关系运算,就是比较两个数值的大小的运算符。n n关系运算符:关系运算
12、符:关系运算符:关系运算符:、=、=z;j=xyz;k=(x=y);printf(%d,%d,%d,i,j,k);第14页,本讲稿共53页例例例例 int a=3,b=2,c=1,d,f;int a=3,b=2,c=1,d,f;ab (ab)=c b+ca 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页,本讲稿共53页3.3.2 逻辑运算符逻辑
13、运算符 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-!079-!0的值的值 第20页,本讲稿共53页 注意注
16、意:在在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 包包包包括括括括了了了了条条条条件件件件运运运运算算算算符符符符的的的的条条条条件件件件表表表表达达达达式式式式的的的的计计计计算算算算方方方方法法法法是是是是:首首首首先先先先计计计计算算算算表表表表达达达达式式式式1 1的的的的值值值值,若若若
18、若表表表表达达达达式式式式1 1为为为为真真真真,条条条条件件件件表表表表达达达达式式式式的的的的解解解解取取取取表表表表达达达达式式式式2 2的的的的值值值值,表表表表达达达达式式式式1 1为为为为假假假假,条条条条件件件件表表表表达达达达式式式式的的的的解解解解取取取取表表表表达达达达式式式式3 3的值。的值。的值。的值。3.5 条件运算符条件运算符 第22页,本讲稿共53页n n例例例例:ab?a:b:ab?a:b 当当当当abab时,表达式的值为时,表达式的值为时,表达式的值为时,表达式的值为a a,否则为,否则为,否则为,否则为b bn n例例例例:c=ab?a:b:c=ab?a:b
19、 将将将将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(Pleae input three int:);scanf(%d%d%d,&a,&b,
20、&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(please input one char:);puts(please input one
21、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、类型强制转换成另一种数据类型。种数据类型强制转换成另一种数据类型。种数据类型强制转换成另一种数据类型。种数据类型强制转换成另一种数据类型。强制转换的格式为:强制转换的格式为:强制转换的格式为:强制转换的格式为:(数据类型名数据类型名数据类型名数据类型名)操作对象操作对象操作对象操作对象 注注注注意意意意,强强强强制制制制转转转转换换换换并并并并不不不不改改改改变变变变操操操操作作作作对对对对象象象象的的的的数数数数据据据据类类类类型型型型和和和和数数数数值值值值。例例例例如如如如,(int)f(int)f的的的的确确确确切切切切含含含含义义义义是是是是将将将将f f转转转转换换换换成成成成为为
24、为为整整整整型型型型值值值值参参参参与与与与运运运运算算算算,而而而而f f本本本本身身身身的的的的数数数数据据据据类类类类型型型型和和和和数数数数值值值值都都都都没没没没有有有有任任任任何何何何改变。改变。改变。改变。第29页,本讲稿共53页n n比较:比较:(float)i+3 和和 (float)(i+3)n n建议:建议:任何情况下都对实行类型转换的表达式任何情况下都对实行类型转换的表达式使用括号。使用括号。第30页,本讲稿共53页3.7 3.7 赋值运算符赋值运算符 n n普通赋值运算符普通赋值运算符 赋值表达式的一般形式是:赋值表达式的一般形式是:变量名变量名=表达式表达式 赋值语
25、句的一般形式是:赋值语句的一般形式是:变量名变量名=表达式;表达式;赋值运算符的优先级小于算术运算符。赋值运算符的优先级小于算术运算符。赋值运算符的结合性是自右至左,赋值运算符的结合性是自右至左,例:例:a=b=2 第31页,本讲稿共53页n n注意:赋值运算符的类型是被赋值的变量的类型,若两端类型不同,会发生类型换。无法赋值给常量和表达式 例:5=a+8,a+2=c+3,是非法的。赋值运算符右边的表达式还可以是一个赋值表达式,构成多重赋值。例:a=b=2第32页,本讲稿共53页n n例:计算下列表达式的值:int a,b;a=3;a=3;a=1;b=0;b=0;b=1;/a=3/表达式值表达
26、式值1/表达式值表达式值0/表达式值表达式值1/表达式值表达式值0/b=0第33页,本讲稿共53页n n复合赋值运算符复合赋值运算符 把把把把赋赋赋赋值值值值运运运运算算算算符符符符与与与与算算算算术术术术、位位位位逻逻逻逻辑辑辑辑、移移移移位位位位运运运运算算算算符符符符放放放放在在在在一起,就构成复合赋值运算符。一起,就构成复合赋值运算符。一起,就构成复合赋值运算符。一起,就构成复合赋值运算符。复复复复合合合合算算算算术术术术赋赋赋赋值值值值运运运运算算算算符符符符有有有有5 5个个个个+=+=、-=、*=*=、/=/=、%=%=。还还还还 有有有有 与与与与 移移移移 位位位位 和和和和
27、 位位位位 逻逻逻逻 辑辑辑辑 结结结结 合合合合 的的的的 复复复复 合合合合 赋赋赋赋 值值值值 运运运运 算算算算 符符符符5 5个个个个(=、&=&=、=、|=|=)。)。)。)。复合赋值运算符的使用规则是:复合赋值运算符的使用规则是:复合赋值运算符的使用规则是:复合赋值运算符的使用规则是:Xop=YXop=YXop=YXop=Y与与与与X=XopYX=XopYX=XopYX=XopY等等等等价。价。价。价。第34页,本讲稿共53页例:例:#include stdio.hvoid main()int c;/*char c;*/c=B;printf(c=%c,c+a-A);第35页,本讲
28、稿共53页3.8 位逻辑运算符位逻辑运算符n n类型:类型:类型:类型:&、|、n n功功功功能能能能:按按按按位位位位与与与与、按按按按位位位位或或或或、按按按按位位位位异异异异或或或或、左左左左移移移移、右右右右移、按位取反移、按位取反移、按位取反移、按位取反n n操操操操作作作作数数数数在在在在实实实实现现现现位位位位操操操操作作作作时时时时按按按按二二二二进进进进制制制制进进进进行行行行运运运运算算算算,一一一一般应为无符号型整数。般应为无符号型整数。般应为无符号型整数。般应为无符号型整数。n n除除除除是一元运算符,其它的都是二元运算符是一元运算符,其它的都是二元运算符是一元运算符,
29、其它的都是二元运算符是一元运算符,其它的都是二元运算符第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页&运算经常用于把特定位清零(屏蔽)。运算经常用于把特定位清零(屏蔽)。例如,例如,a的值为的值为11011010,b的值为的值为11110000,a&b11011010&1111000011
30、010000相当于把相当于把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页|运算经常用于把特定位置运算经常用于把特定位置1 1。例如,例如,a的值为的值为11011010,b的值为的值为11110000,a|b11011010
31、|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 (结果)(结果)第41页,本讲稿共53页按位取反按位取反 按位取反的规则是:按位取反的规则是:0=1 1=0第42页,本讲稿共53页移位运算符移位运算符n n左移左移
32、左移左移 n n双双双双目目目目运运运运算算算算符符符符,运运运运算算算算符符符符右右右右边边边边的的的的表表表表达达达达式式式式表表表表示示示示移移移移位位位位的的的的位位位位数数数数。例:例:例:例:x=x2 x=x2 表示把表示把表示把表示把x x进行左移进行左移进行左移进行左移2 2位后赋值给位后赋值给位后赋值给位后赋值给x x。n n左左左左移移移移运运运运算算算算规规规规则则则则:将将将将操操操操作作作作数数数数的的的的每每每每个个个个二二二二进进进进制制制制向向向向左左左左移移移移动动动动若若若若干干干干位位位位,从从从从左左左左边边边边移移移移出出出出的的的的高高高高位位位位丢
33、丢丢丢失失失失,右右右右边边边边空空空空出出出出的的的的低低低低位位位位补补补补0 0。实实实实际际际际上上上上就就就就是是是是扩扩扩扩大大大大原原原原数数数数的的的的倍倍倍倍数数数数,左左左左移移移移位位位位扩扩扩扩大大大大倍倍倍倍,左移位扩大倍,左移位扩大倍,左移位扩大倍,左移位扩大倍,。第43页,本讲稿共53页n n右移运算规则:缩小原数的倍数。右移运算规则:缩小原数的倍数。右移运算规则:缩小原数的倍数。右移运算规则:缩小原数的倍数。n n将操作数的每个二进制位向右移动若干位,从右边移出将操作数的每个二进制位向右移动若干位,从右边移出将操作数的每个二进制位向右移动若干位,从右边移出将操作
34、数的每个二进制位向右移动若干位,从右边移出的低位部分丢失。的低位部分丢失。的低位部分丢失。的低位部分丢失。n n右移时,若符号位为,则右边填零。若符号位为,右移时,若符号位为,则右边填零。若符号位为,右移时,若符号位为,则右边填零。若符号位为,右移时,若符号位为,则右边填零。若符号位为,根据机器不同分为算术移位(填充)逻辑移位(填根据机器不同分为算术移位(填充)逻辑移位(填根据机器不同分为算术移位(填充)逻辑移位(填根据机器不同分为算术移位(填充)逻辑移位(填充)。充)。充)。充)。第44页,本讲稿共53页n n例:int a=8,x,y;x=a2;n n例:int a=-4,x,y;x=a2
35、;第45页,本讲稿共53页3.9 其它运算符其它运算符逗号运算符逗号运算符 表达式表达式表达式表达式1 1 1 1,表达式,表达式,表达式,表达式2 2 2 2 逗号表达式的求值过程是:先求解表达式逗号表达式的求值过程是:先求解表达式逗号表达式的求值过程是:先求解表达式逗号表达式的求值过程是:先求解表达式1 1 1 1,再求解表达式再求解表达式再求解表达式再求解表达式2 2 2 2,并将表达式,并将表达式,并将表达式,并将表达式2 2 2 2的解作为逗号表达的解作为逗号表达的解作为逗号表达的解作为逗号表达式的解。式的解。式的解。式的解。例如例如例如例如5,6 5,6 的值是的值是的值是的值是6
36、 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或或是是求求表表达达式式中中的的数数据据类类型型表表示示的的数数据据在在内内存存单单元元中中所所占占的的字节数。字节数。例:例:sizeof(int)的结果是的结果是2,sizeof运运算算符符比比较较灵灵活活,同同样样是是求求整整型型int数数据据所所占占
38、的的字字节节数,可以使用三种办法:数,可以使用三种办法:(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);练 习第49页,本讲稿共53页n n2、#include stdio.h void main()integer I,j;printf(“Enter an integer:);scanf(“%d
39、”,&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页