C语言第六课运算符与表达式.ppt_第1页
C语言第六课运算符与表达式.ppt_第2页
C语言第六课运算符与表达式.ppt_第3页
C语言第六课运算符与表达式.ppt_第4页
C语言第六课运算符与表达式.ppt_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

C C语言程序设计语言程序设计 第六课 运算符与表达式 湛江师范学院 陈其嶙湛江师范学院 陈其嶙 6.1 6.1 运算符与表达式的相关概念运算符与表达式的相关概念 到现在为止,我们了解了到现在为止,我们了解了C C语言中各种数据类型的特点及其语言中各种数据类型的特点及其 表示形式。那么如何对这些数据进行处理和计算呢?通常当我们表示形式。那么如何对这些数据进行处理和计算呢?通常当我们 要进行某种计算时,都要首先列出算式,然后求解其值。在程序要进行某种计算时,都要首先列出算式,然后求解其值。在程序 设计中,表达式是计算求值的基本单位。设计中,表达式是计算求值的基本单位。 简单的说,表达式是由运算符(例如:简单的说,表达式是由运算符(例如:+ + - - * * / /)、操作)、操作 数(可以是常数、变量等等)和括号组成。执行表达式所规定的数(可以是常数、变量等等)和括号组成。执行表达式所规定的 运算,所得到的结果值便是表达式的值。例如运算,所得到的结果值便是表达式的值。例如 a+ba+b,x/yx/y 都是都是 表达式。表达式。 C C语言中定义了丰富的运算符,如算术运算符,关系运算符语言中定义了丰富的运算符,如算术运算符,关系运算符 、逻辑运算符等等。有些有些运算行需要两个操作数,使用形式、逻辑运算符等等。有些有些运算行需要两个操作数,使用形式 为:为: 操作数操作数1 1 运算符 操作数 运算符 操作数2 2 这样的运算符称为这样的运算符称为二元运算符(或双目运算符)二元运算符(或双目运算符)。另一些运。另一些运 算符只需要一个操作数,称为算符只需要一个操作数,称为一元运算符(或单目运算符)一元运算符(或单目运算符)。 6.2 6.2 运算符与表达式注意的问题运算符与表达式注意的问题 1 1、表达式的值、表达式的值 5 + 105 + 10 2 2、运算符的优先级、运算符的优先级 6 + 5 * 46 + 5 * 4 3 3、运算符的结合性、运算符的结合性 10 / 5 * 210 / 5 * 2 4 4、变量的值、变量的值 int a = 5;int a = 5; a = a + 2;a = a + 2; 6.3 6.3 算术运算符算术运算符/ /表达式表达式 和其它高级语言一样,和其它高级语言一样,C C语言分别用语言分别用+ +、- -、* *、/ /表示四则运表示四则运 算的加、减、乘、除运算符。算的加、减、乘、除运算符。C C语言基本的算术运算符如表所示语言基本的算术运算符如表所示 。 运算符功能介绍举例 + + 加法运算符或正加法运算符或正值值运算符运算符 a+b; 3+5; +5;a+b; 3+5; +5; - - 减法运算符或减法运算符或负值负值 运算运算 符符 a-b; -3;a-b; -3; * * 乘法运算符乘法运算符a*b; a*a; 3*a;a*b; a*a; 3*a; / / 除法运算符除法运算符a/b; 9/4; 5.0/3.0a/b; 9/4; 5.0/3.0 % % 模(求余)运算符模(求余)运算符a%b; 7%4;a%b; 7%4; 注意事项:注意事项: 1)1)加、减运算符,如果当作正、负符号使用时,就不是加加、减运算符,如果当作正、负符号使用时,就不是加 减运算符了,正、负号的优先级要高于乘、除运算符。减运算符了,正、负号的优先级要高于乘、除运算符。 2 2)除法运算,如果两个操作数是整数,则是整除运算,)除法运算,如果两个操作数是整数,则是整除运算, 其结果是整数。例如其结果是整数。例如 5/3=15/3=1,-5/3=-1-5/3=-1,舍弃了小数部分。,舍弃了小数部分。 如果两个操作数中有实数,则此运算符变为实数相除运算,结如果两个操作数中有实数,则此运算符变为实数相除运算,结 果是实数。例如:果是实数。例如:1.0/3.0=0.333331.0/3.0=0.33333。 3 3)什么是取模运算呢?在)什么是取模运算呢?在C C语言中,取模运算符为语言中,取模运算符为% %,表,表 达式达式x%yx%y是是x x除以除以y y所得的余数。如果所得的余数。如果x x正好能被正好能被y y整除的话,那整除的话,那 么结果是么结果是0 0。例如:。例如:45%5=045%5=0; ; 45%10=545%10=5。 取模运算要求两个操作数必须是整型数,其结果也是整数取模运算要求两个操作数必须是整型数,其结果也是整数 。下面这个式子在。下面这个式子在C C语言中是非法的:语言中是非法的: 12.4%6.712.4%6.7 例:数学表达式 转 例:数学表达式 转 C C表达式表达式 s(s-a)(s-b)(s-c)s(s-a)(s-b)(s-c)s s* *(s-a)(s-a)* *(s-b)(s-b)* *(s-(s- c)c) a*b/(2*a)a*b/(2*a) 5.0/9.0*(f-32)5.0/9.0*(f-32) 6.3 6.3 赋值操作(赋值表达式)赋值操作(赋值表达式) “赋值赋值”使用最基本的运算符使用最基本的运算符-赋值运算符,符号是赋值运算符,符号是“= =” ,它的作用是将一个表达式的值赋值给一个变量。例如,我们见,它的作用是将一个表达式的值赋值给一个变量。例如,我们见 过的过的“a=3a=3“,它的作用是将常量,它的作用是将常量 3 3 赋值给变量赋值给变量 a a 。当然,我。当然,我 们也可以将一个表达式的值赋给一个变量。例如:们也可以将一个表达式的值赋给一个变量。例如: a = b*c*d*d-345;a = b*c*d*d-345; 注意:注意:这里的赋值符号这里的赋值符号“= =”和数学上的等号是不一样的。和数学上的等号是不一样的。 赋值符号赋值符号“= =”表示将右边的数值赋给左边的变量,在一次赋值表示将右边的数值赋给左边的变量,在一次赋值 之后,还可以进行多次赋值。比如:之后,还可以进行多次赋值。比如: a = 3*6;a = 3*6; a = b;a = b; 6.3 6.3 赋值运算符赋值运算符 除了我们在普通赋值运算符 除了我们在普通赋值运算符“ “” ”外,赋值运算符还允许外,赋值运算符还允许 一些变形一些变形-复合赋值运算符。比如:复合赋值运算符。比如:a+=3a+=3,在赋值号,在赋值号“ “ ” ”前加一个其它运算符前加一个其它运算符“ “+”+”就构成了复合运算符就构成了复合运算符“ “+=+=” ”。其意。其意 义等价于:义等价于:a = a + 3a = a + 3。我们还可以使用下面这几种复合。我们还可以使用下面这几种复合 运算符。运算符。 +=+=、-=-=、* *= =、/=/=、%=%= 比如:比如: a -= 3a -= 3(等价于(等价于 a = a - 3a = a - 3) x *= y + 8x *= y + 8(等价于(等价于 x = x*(y+8) )x = x*(y+8) ) 赋值表达式赋值表达式 变量表达式变量表达式 1.1.计算赋值运算符右侧计算赋值运算符右侧表达式表达式的值的值 2.2.将赋值运算符右侧将赋值运算符右侧表达式表达式的值赋给左侧的的值赋给左侧的变量变量 3.3.将赋值运算符左侧的将赋值运算符左侧的变量变量的值作为表达式的值的值作为表达式的值 赋值表达式的值赋值表达式的值 例例6-1 6-1 复合算术赋值运算符复合算术赋值运算符 #include #include void main( )void main( ) int x, y, z; int x, y, z; z=(x=7)+(y=3); z=(x=7)+(y=3); printf(“%d,%d,%dn“, x, y, z); printf(“%d,%d,%dn“, x, y, z); x=y=z=x+2; x=y=z=x+2; printf(“%d,%d,%dn“, x, y, z); printf(“%d,%d,%dn“, x, y, z); x*=y-3; x*=y-3; printf(“%d,%d,%dn“, x, y, z); printf(“%d,%d,%dn“, x, y, z); x=7, y=3, z=x+y z=x+2, y=z, x=z x=x*(y-3) 6.4 6.4 自增、自减运算符自增、自减运算符/ /表达式表达式 在程序设计时,为了控制程序的流程,经常要进行大量循在程序设计时,为了控制程序的流程,经常要进行大量循 环计数的运算环计数的运算“ “j=j+1“j=j+1“、” ”j=j-1“j=j-1“。为了简化程序的输入,。为了简化程序的输入,C C 语言专门提供了变量值为语言专门提供了变量值为1 1、减、减1 1的特殊运算符的特殊运算符“ “自增自增” ”和和“ “自减自减” ” 运算符运算符 “ “+“ “,” ”-” ”。 自增、自减运算符是自增、自减运算符是C C语言的一个特色,它的作用是将变量语言的一个特色,它的作用是将变量 值加值加1 1或减或减1 1,例如:,例如: +i; -i; +i; -i; (在使用(在使用i i之前,先对之前,先对i i的值进行加(减)的值进行加(减)1 1操作)操作) i+; i-i+; i-; (在使用(在使用i i之后,再对之后,再对i i的值进行加的值进行加( (减)减)1 1操作)操作) 自增、自减表达式的值自增、自减表达式的值 粗看起来,粗看起来,+i+i和和i+i+的作用都是的作用都是 i=i+1i=i+1,但是它们在程序中的作,但是它们在程序中的作 用却是不同的。用却是不同的。+i +i 是先执行是先执行 i=i+1i=i+1,再使用,再使用i i的值。而的值。而i+i+是先使用是先使用 i i的值,再执行的值,再执行 i=i+1i=i+1。例如,下列语句中。例如,下列语句中i i的初始值都是的初始值都是5 5,执行结,执行结 果果k k的值却不不同。的值却不不同。 k=+i;k=+i; 先执行先执行i=i+1i=i+1,i i的值为的值为6 6,再赋值给,再赋值给k k,k=6k=6。 k=i+;k=i+; 先使用先使用i i的值为的值为5 5,把它赋值给,把它赋值给k k,k=5k=5,再执行,再执行 i=i+1i=i+1。 注意:注意: 1 1、自增、自减运算符都只能用于变量,不能用于常量或表达式、自增、自减运算符都只能用于变量,不能用于常量或表达式 。例如:。例如:+5+5、(3*s)+(3*s)+都是非法的。都是非法的。 2 2、用于自增、自减的变量只能是整型、字符型和指针型变量,、用于自增、自减的变量只能是整型、字符型和指针型变量, 不能是实型变量。不能是实型变量。 3 3、自增、自减运算符满足处右向左的结合律。、自增、自减运算符满足处右向左的结合律。 /*/*程序:程序:ex06_02.cex06_02.c 演示演示 i+ i+ 和和 +i +i 的区别的区别 * */ / #include #include void main()void main() int i,n;int i,n; i = 5;i = 5;/给给i i赋初值赋初值 n = i+;n = i+;/改为改为 n=+i n=+i 后重新运行本程序后重新运行本程序 printf(“i=%d,n=%dn“,i,n);printf(“i=%d,n=%dn“,i,n); 表达式表达式1, 1, 表达式表达式2, 2, ,表达式,表达式n n 先计算表达式,然后计算表达式先计算表达式,然后计算表达式,,最后计算表,最后计算表 达式达式n n的值,并将表达式的值,并将表达式n n的值作为逗号表达式的值的值作为逗号表达式的值. . 逗号运算符的优先级最低,从左向右逗号运算符的优先级最低,从左向右 a = (3+5 , 4*6 ) a = (3+5 , 4*6 ) a = 3+5 , 4*6 a = 3+5 , 4*6 a=24a=24 a=8a=8 6.5 6.5 逗号运算符逗号运算符/ /表达式表达式 6.6 6.6 数据类型的转换数据类型的转换 当一个运算符具有不同类型的运算对象时,必须进行类当一个运算符具有不同类型的运算对象时,必须进行类 型转换。这种类型转换的一般如下:型转换。这种类型转换的一般如下: (1)(1)低级类型向高级类型转换低级类型向高级类型转换 数据类型由低级向高级的排列顺序是: 数据类型由低级向高级的排列顺序是: char char int int long long float float double double 在数据转换中,低级类型服从高级类型,并进行相应转在数据转换中,低级类型服从高级类型,并进行相应转 换。在运算中可以将所有的换。在运算中可以将所有的charchar型转换成型转换成intint型数据,所有型数据,所有 的的 float float 数据可以转换为数据可以转换为 double double 数据。例如,下列语数据。例如,下列语 句:句: int a;int a; a = 15 + a;a = 15 + a; printf(“aprintf(“a的值是:的值是:%dn“,a);%dn“,a); 结果是结果是112112 (2)(2)赋值运算的类型转换赋值运算的类型转换 在对赋值表达式求解过程中

温馨提示

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

评论

0/150

提交评论