第3讲 运算符和表达式_第1页
第3讲 运算符和表达式_第2页
第3讲 运算符和表达式_第3页
第3讲 运算符和表达式_第4页
第3讲 运算符和表达式_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

char类型数据作为整数使用范围0-255(无符号)-128-127(有符号)。unsignedcharc;charc;思考

阅读下面的程序,分析其功能,修改其中的错误。

#include<stdio.h>voidmain{A,B,C;A+B=5;printf(“A+B=,C=”,a,b,c);}2.3运算符和表达式教学要求:1.掌握各种数据运算的运算符的运算。2.掌握各种运算符的优先级、结合方向。3.掌握各种表达式的书写方法。4.掌握混合运算时的类型转换规则。数学中的式子:3+5*6sinA+sinB运算符操作数2.3.1概述1.什么是表达式由运算符和操作数组成的式子是表达式。不同类型的表达式按不同运算规则进行计算。2运算符的分类(P49,表3-7)按运算符要求运算对象的个数分类:单目运算符、双目运算符、三目运算符。按其数据操作功能分类:算术运算符、关系运算符、逻辑运算符、位运算符、C的特殊运算符。

2.3.2算术运算符和算术表达式算术运算符:

+ - * / %

加减乘除整除取余算术表达式:

由算术运算符和括号将运算符对象连接起来的,符合C语法规则的式子。如:a*b/c-1.5+’a’运算对象:数值变量、常数、函数、表达式等算术表达式注意事项注意事项:(1)/:若两侧为整形,则其结果为整形,如果两个操作数中有一个是实数,则运算结果为实数。

5/2=25/-2=-2-5/2=-21.0/3=0.333333

自动类型转换同种数据类型的运算结果,还是该类型不同种数据类型的运算结果,是两种类型中取值范围更大的那种long

double>double>float>long>int>short>chardoublefloatlongunsignedintchar,short精度低精度高注意以下式子:1/2*4/3算术运算中分母一定不能为0!!!!!算术表达式注意事项(2)%:条件:两侧均为整形。

5%2=15%-2=1-5%2=-1(3)C语言算术表达式的乘号(*)不能省略。例如:数学式b2-4ac,相应的C表达式应该写成:

b*b-4*a*c。

2.3.2算术运算符和算术表达式3+3*4=15or=24优先级:

高:*,/,%,

低:+,-结合性:从左至右(左结合性)2.5+3+3*4=?2.3.2算术运算符和算术表达式2.5+3+3*417.52.5+3+125.5+12=17.5

例算术表达式(教材P41)#include"stdio.h"voidarithExp(){inta=1,b=2;floatc=1.0,d=2.0;printf("a/b=%d\n",a/b);printf("c/d=%f\n",c/d);printf("a/d=%f\n",a/d);printf("a+b/c+d=%f\n",a+b/c+d);printf("a%%b=%d\n",a%b);}voidmain(){arithExp();}2.3.3关系运算符和关系表达式关系运算符:

><==>=<= !=

大于小于等于大于等于小于等于不等于关系表达式:用关系运算符将两个表达式连接起来的式子。计算结果是一个整形值,非逻辑值(“真”和“假”);用0代表假,1代表真;优先级:{>,>=,<,<=}高于{==,!=}

关系运算符<算术运算符运算对象:算术、关系、赋值、字符表达式运算规则

例如,a=3,b=5;a>=b,结果为0a<b,结果为1

a==b,结果为0

a!=b,结果为1结合性:从左到右。2.3.4逻辑运算符和逻辑表达式逻辑运算符:

&&(与)||(或)!(非)逻辑表达式:由逻辑运算符组成的表达式。计算结果:是一个整形值,非逻辑值(“真”和“假”);用0代表假,1代表真。(教材P43表3-6)操作数:基本类型或指针类型优先级:!>&&>||

(低)||、&&

->关系运算->算术运算->!(高)执行:不是所有的逻辑运算符都被执行,而是在执行下一个运算符才能求出表达式的解时,才执行该运算符。(p43)实例ch是英文大写字母(ch>='A')&&(ch<='Z')判断某一年year是否是闰年的条件是满足下列两个条件之一:能被4整除,但不能被100整除;能被400整除;((year%4==0)&&(year%100!=0))||(year%400==0)2.3.5赋值运算符和赋值表达式赋值运算符“=”:格式:变量=表达式;结合性:右结合如,i=4;i=j;i=3+4*5;i=max(a,b);复合赋值运算符:

+=、-=、*=、/=、%=、>>=、<<=

格式:Vop=e

等价于:V=Vope

例如:a+=5,等价于a=a+5x*=y+8等价于x=x*(y+8)例3-5:赋值表达式求值。(1)x=(y=12)/4y值为12,x值为3,表达式的值为3(2)x=y=12/4y值为3,x值为3,表达式的值为3(3)x=(y=12/4)(y值为3,x值为3,表达式的值为3(4)(x=y)=12/4该赋值运算符左边不是变量,而是一个表达式×自动类型转换在进行赋值操作时,会发生类型转换将取值范围小的类型转为取值范围大的类型是安全的反之是不安全的如果大类型的值在小类型能容纳的范围之内,则平安无事但是,浮点数转为整数,会丢失小数部分,非四舍五入教材P44说明强制类型转换运算符一般形式:(类型名)(表达式);表达式要用括号括起来。如1:(double)a;(int)(x+y);如2:inti1=1,i2=2;floatf1;f1=(float)i1/i2;//结果f1为0.5注意:强制类型转换只是临时转换,原来变量的类型没有发生变化。例2.7#include<stdio.h>main(){

intm=5;

printf("m/2=%d\n",m/2);

printf("(float)(m/2)=%f\n",(float)(m/2));

printf("(float)m/2=%f\n",(float)m/2);

printf("m=%d\n",m);}m/2=2(float)(m/2)=2.000000(float)m/2=2.500000m=5两个整数运算的结果还是整数,不是浮点数2.3.6自增与自减运算符++i,--i先增(减)1,再使用ii++,i--先使用i,再增(减)1例:(2)j=i++;若i的初始值为3(1)j=++i;i=4;j=4;i=4;j=3;结合性:自右向左例:i=2;j=-i++;分析:(1)++、--、+(正号)、-(取负)是同级运算符,结合方向:自右向左。(2)-i++等价于-(i++)(3)对于括号内的自增运算,又要先使用i,再使i增加1。运算结果:i的值为3,j的值为-2。++、--示例p46#include"stdio.h"voidincDec(){intintegeri=5,integerj=5,integerp,integerq;integerp=(integeri++)+(integeri++)+(integeri++); /*integeri参与运算后,integeri的值再自增1*/integerq=(++integerj)+(++integerj)+(++integerj);/*j自增1后,再参与其他的运算*/printf("%d,%d,%d,%d\n",integerp,integerq,integeri,integerj);}voidmain(){incDec();}2.3.7条件运算符与条件表达式有两个符号:?、:,它与三个操作数组成三元运算。一般形式:<表达式1>?<表达式2>:<表达式3>求值规则和表达式的值:求解表达式1真(非0)求解表达式2假(0)求解表达式3表达式的值优先级:逻辑>条件>赋值结合性:

自右至左此种表达式切忌用得过于繁杂if(a>b)z=a;else

z=b;z=(a>b)?a:b;2.3.9逗号运算符与逗号表达式形式:逗号表达式1,逗号表达式2,…,逗号表达式n求值规则:从左至右依次计算各表达式的值优先级最低结合性:自左至右表达式的值最后一个表达式的值。例3-7:逗号表达式的值。

aby

逗号表达式

y=a=4,b=5,a+b;4549y=(a=4,b=5,a+b);4599y=(a=4,b=5),a+b;4559y=a=(4,b=5),a+b;55510注意:C语言常用逗号作为分隔符,例如:

inta=3,b=4,c=5;printf("%d,%d,%d",(a,b,c));printf("%d,%d,%d",a,(a,b,c),c);2.4不同类型数据之间的混合运算C语言允许不同类型的数据进行运算,但在运算前要进行类型转换(自动)。c+x*y=?1.6(double)65(int)2(int)3.2(double)68.2(double)例3-10:数据类型转换intx=2;floaty=1.6;charc='A';2.5运算符的优先级

当一个表达式中出现多个运算符时,表达式的求值运算按运算符的优先级别从高到低的顺序执行。在C语言中,将44种运算符的优先级从高到低共分为15个等级。如表2.1所示。

初等运算符 (

温馨提示

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

评论

0/150

提交评论