欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    c语言运算符和表达式.ppt

    • 资源ID:5426566       资源大小:607.50KB        全文页数:69页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    c语言运算符和表达式.ppt

    1,内容回顾,单个字符的输入和输出函数字符输出函数putchar(c)字符输入函数getchar()格式化输入(scanf)输出(printf)函数的用法 整型数据的输入输出(%d,%o,%x,%u)实型数据的输入输出(%f,%e,%lf,%le)字符型数据的输入输出(%c)常用函数(包含头文件,函数原型),第三章,运算符和表达式,3,本章内容,3.1 算术表达式 3.2 赋值表达式 3.3 逻辑表达式 3.4 其他表达式 3.5 多种类型混合运算,4,运算符简介,C语言中,数据是程序处理的对象,运算是对数据进行加工的过程,体现数据之间的各种不同运算关系的符号就称为运算符。C语言中,除了控制语句和输入输出以外的几乎所有的基本操作都是用运算符来实现的。例如:赋值操作的功能,在C语言中是用赋值运算符“=”来实现的。,5,C语言的运算符按照其功能分为以下13类:算术运算符+-*/%+-下标运算符 关系运算符!分量运算符-逻辑运算符!|强制类型转换运算符(类型)赋值运算符 及其扩展赋值运算符 求字节数运算 sizeof 条件运算符?:位运算符|逗号运算符,指针运算符*其他运算符 如函数调用运算符(),6,学习运算符,主要掌握以下4点:,运算符操作的数据的类型。不同的运算符操作的数据的类型不一定相同;而且每种运算符操作的数据的类型是相对固定的。运算符操作的数据的个数。不同的运算符操作的数据的个数不一定相同;根据运算符连接运算对象的个数,一般分为单目运算符(如+、-)、双目运算符(如*/%)和三目运算符(如?:)。,7,运算符在整个运算符系统中的优先级。优先级是指在运算对象的左右都有运算符时运算的先后次序。运算对象先做优先级高的运算。如:*/比+-优先级高。运算符操作的数据的结合性。运算符的结合性规定了在表达式求解过程中,若运算对象其左右运算符优先级相同时的运算方向。结合性有两种:左结合(从左到右计算)和右结合(从右到左计算)。,8,表达式:用运算符将运算对象(常量、变量、函数等)连接而成的式子。如 a*b/c-1.5+a表达式使用时应注意表达式的值及类型。a.不同类型的运算符所表示的表达式类型也是不同的。表达式一般有算术表达式、赋值表达式、关系表达式、逻辑表达式、逗号表达式、条件表达式等表达式。b.表达式虽然有各种类型,但它总是有确定的值的,根据运算符的优先级和结合性进行计算。,9,表达式书写的一般规则:表达式必须写在同一行上,只能使用圆括号,且左右括号个数要相同,有多层括号时内层括号中的运算优先。,如:,写作:1.0/2*(a*x+(a+x)/4/x),例:写出下列代数式的C算术表达式 1+(4+x)1/3x,(1+pow(4+x),1.0/3)*x,y/(2*sqrt(x*x+y*y),10,3.1 算术表达式,(一)基本算术运算符:(加法运算或正号运算符)(减法运算或负号运算符)*(乘法运算符)(除法运算符)%(求余运算符,或称模运算符)+自增运算符-自减运算符,3.1.1 算术运算符,11,算术运算符的优先级和结合性,单目+-+-双目*/%双目+-,从右向左,从左向右,如:-5+3%2 相当于(-5)+(3%2)结果为-4(优先级)3*5%3 相当于(3*5)%3 结果为 0(结合性),12,注意:1)+、-、*、/与数学中的运算顺序相似,先乘除,后加减,从左到右。2)求余运算符%要求两个运算对象均为整型数据。余数符号与左边的运算对象符号相同。如:2%3为2,-9%5为-4,9%-5为4。3)%、/运算符的右操作数不可以为0。4)字符类型的数据以该字符的ASCII码参加运算。如:a+2 相当于97+2。,13,5)/运算符,操作数的类型不同,功能不同。当两个操作数均为整型时,其结果的类型也为整型。a.若除数和被除数都为正值,结果为正,直接舍去小数部分,如:5/2的结果为2。若两个操作数中有一个为实数,则结果是 double 型。因为所有实数都按double型进行运算。如:5.0/2的结果2.5.,b.若除数或被除数中有一个为负值,则舍入的方向是不固定的。如:-5/3=?多数机器采取“向零取整”的方法,即5/3=1,-5/3=-1,取整后向零靠拢。,14,整除和求余数的特殊用处,123%10的结果是3;12%10的结果是2;123/10,结果是12;12/10的结果是1;通过整除和求余数交叉应用,可以分解一个整数。这个技巧以后我们要经常使用。小程序:输入一个三位数的整数,请分离出各位,十位,百位,并输出。,15,(二)自增、自减运算符运算符号:+(自增运算符)-(自减运算符)功能:使变量的值增 1 或减 1。用途:常用于循环语句中使循环变量自动加或减。也用于指针变量,使指针指向下或上一个地址。操作数:只能是变量不能是常量、表达式和函数。如:i+,+i,i-,-i 是正确的。+8,+sin(4),(x+y)+是错误的。结合性:自增(减)运算符的结合性是右结合。优先级:单目运算符,优先级高于算术运算符,低于括号类运算符。,16,+、-作用于变量的形式有两种:前缀方式(prefix):运算符 变量,如+i、-i;后缀方式(postfix):变量 运算符,如i+、i-;,:在使用之前,先使 的值加(减),:在使用之后,再使 的值加(减),17,自增、自减运算取变量的值作为表达式的值.如:设n=10;+n:1)n=n+1=11;2)取n值11作为表达式+n的值.n+:1)取n值10作为表达式n+的值;2)n=n+1=11.例子:,int i,k;i=2;k=+i;i=2;k=i+;,i=3,i=3,k=3,k=2,k=ii=i+1,i=i+1k=i,18,例3.1#include void main()int a=2,b=2,x,y;x=-a+2;/前缀运算 y=b+-1;/后缀运算 printf(x=%d y=%dn,x,y);printf(a=%d b=%dn,a,b);,运行结果:x3 y=1 a=1 b=3,a=a-1,x=a+2,y=b-1,b=b+1,19,/连续的-表示前两个是对a的自减,最后的-表示减法运算,例3.2#include void main()int a=2,b=2,c;c=+a+b-;/变量a为前缀运算,b为后缀运算 printf(a=%d,b=%d,c=%dn,a,b,c);a=b=2;c=-a-b;printf(a=%d,b=%d,c=%dn,a,b,c);a=b=2;printf(a=%dn,a+);printf(b=%dn,+b);c=a+b;/a、b增1后的值参加运算 printf(“c=%dn”,c);,a=a+1,c=a+b,b=b-1,c=-(a-)-b,c=-a-b,a=a-1,c=(a+1)+(b+1),b=b+1,输出:a=3,b=1,c=5,输出:a=1,b=2,c=-4,输出:c=6,输出:a=2,输出:b=3,说明:C语言处理时是从左到右取最多个数的符号作为一个合法的运算符。,20,3.1.2 算术表达式:用算术运算符和括号将运算对象(也称操作数)连接起来的、符合语法规则的式子,称为算术表达式。运算对象包括常量、变量、函数等。例如:*.5a 是一个合法的表达式。,21,3.2.1 赋值运算符1)运算符:=2)作用:将一个数据或表达式的值赋给一个变量。如:/表示把常量3赋给变量a y=a*sin(z)/表示把表达式a*sin(z)的结果求出来再赋给一个变量y注:赋值运算符与数学中的等号不同,赋值运算符求解后能够得到一个运算结果。3)赋值运算符的优先级和结合性:优先级较低,结合性是从右向左。如:x=y=3;,3.2 赋值表达式,22,3.2.2 赋值表达式变量表达式计算赋值运算符右侧表达式的值将赋值运算符右侧表达式的值赋给左侧的变量将赋值运算符左侧的变量的值作为表达式的值例:n=2;n=n+1;,23,对赋值表达式的说明:a.赋值运算符左侧只能是变量,不可以是表达式、函数或常变量也不能作为左值。b.赋值表达式中右边的表达式又可以是赋值表达式。例:a=b=7赋值表达式中含有多个赋值运算符时,从右向左依次赋值。c.赋值表达式可以以表达式形式出现在某些语句(如输出语句、循环语句等)中。如:printf(%d,a=b);,24,3.2.3 赋值语句 变量=表达式;功能:先计算表达式的值,然后将值赋给变量。例:int a,b,c;float x,y;x=sqrt(7);y=x+4;a=b=c=6;,25,.,3.2.4 复合赋值运算符,双目运算符与赋值运算符的合成或简化,称为复合赋值运算符。语言规定可以使用种复合赋值运算符:,*,|复合赋值运算符的优先级和结合性同赋值运算符。,26,变量 双目运算符=表达式,复合赋值运算符的功能:先将变量与赋值运算符后面的表达式进行一次双目运算符所指定的运算,然后再将运算结果赋给变量。例如:等价于*等价于*()等价于,以“”为例来说明,它相当于使进行一次自加()的操作。即先使加,再赋给。,27,注意:如果=右边是包含若干项的表达式,则相当于它有括号。如:x%=y+3 x%=(y+3)|_ x=x%(y+3)(不要错写成x=x%y+3),复合赋值运算表达式:变量 双目运算符=表达式,是个整体,步骤:1)左边变量的当前值与右边整个表达式进行相应运算。2)把1)的结果赋给左边的变量。3)赋值表达式的值是左边变量的值。,28,例3.3 赋值运算符的使用#include void main()int a=5,b=5,c=5;a-=2;b*=a+3;c/=a-1;printf(a=%d,b=%d,c=%dn,a,b,c);,结果:a=3,b=30,c=2,a=a-2,b=b*(a+3),c=c/(a-1),29,3.3 逻辑表达式,关系运算符是用来比较两个运算对象大小的,运算结果是成立或不成立。如果成立,则结果为逻辑值“真”,用整数“1”来表示;如:5=5如果不成立,则结果为逻辑值假”,用整数“0”来表示。如:55,3.3.1 关系运算符及关系表达式,1.关系运算符,30,C语言提供的6种关系运算符:,3.3 逻辑表达式,31,2.关系运算符的优先级:关系运算符的优先级低于算术运算符,高于赋值运算符。、=的优先级相同。=、!=的优先级相同。关系运算符的结合性:左结合如:int x=7;计算下面关系表达式的值:x5!=1 1=15,高低,32,3.关系表达式,用关系运算符将两个表达式连结而成的式子。如:ab、a+bb+c、(a=3)(b=5)、ab)(bc)等。C语言中并没有bool这个数据类型或说逻辑型数据,故表示关系运算结果时,以1代表真,以0代表假。在实际运行过程中,非零值为真,零为假。,33,如:1)若有int a=3,b=2,c=1,d;则 d=(a=3)(b=4);结果为0。d=abc;结果为0。d=ac=c;结果为1。2)若int a=5,b=3;printf(%d,ab);,34,例3.4 分析下面程序的运行结果。#include void main()float x,y=0.3;y=y*11;x=3+0.3;if(x=y)printf(ok,x=y);else printf(no,x!=y);,说明:两个实数一般不作相等或不等比较。(因为实数表示或在计算过程中有时存在误差),结果:no,x!=y,35,字符数据可以进行大小比较。比较时,用字符的ASCII码进行比较。如:A B Z a,36,例3.5#include void main()int a,b,c;scanf(%d%d%d,a=1,b=3,c=4,a=1,b=12,c=5,a=0,b=12,c=5,37,3.3.2 逻辑运算符及逻辑表达式,1、逻辑运算符 逻辑与&(表示并且)逻辑或|(表示或者)逻辑非!(表示相反),例:!a,例:a&b,例:a|b,结合性:!单目运算,右结合&、|双目运算,左结合,38,用逻辑运算符将关系表达式或逻辑量连接而成的式子。如:x=3 3|5!(x+y)&7逻辑运算对象可以任何类型的数据(整型、实型、字符型、指针型、枚举型)。判断逻辑运算对象的真假非0表示真 0表示假,2.逻辑表达式,x,y可以是任意表达式,39,逻辑表达式的运算结果为一逻辑值(即真或假)。1(表示逻辑真,即满足条件)0(表示逻辑假,即不满足条件)逻辑表达式在程序中一般用于控制语句(if、for、while、do while),对某些条件作出判断,根据条件的成立(真)与不成立(假)决定程序的流程。,40,3.逻辑运算的规则:,逻辑与&逻辑或|逻辑非!真值表 x y x&y x|y!x假 假 0 0 1假 真 0 1 1真 假 0 1 0真 真 1 1 0,0 00 非0非0 0非0 非0,5&7=?,0|7=?,!7=?,41,总结:!运算结果为运算对象逻辑值的反 当运算对象为非零值时,则运算结果为0,反之当运算对象为零值时,则运算结果为 1&当两个运算对象均为非零值时,运算结果为 1,否则运算结果值为0|当两个运算对象中有一个为非零值时,运算结果为 1。当两个运算对象均为零时,则运算结果才为 0。,42,内容回顾,算术运算符:/%+-赋值运算符:=复合赋值运算符:+=-=/=%=关系运算符:=!=逻辑运算符:&|!使用运算符时应注意:优先级和结合性,43,4.逻辑运算符的优先级,!+-+-(正负)*/%+、-(加减)=!=&|=+=-=*=/=%=,高,低,例3.6 写出下列表达式的值。设 int a=2,b=3;char c=A;float x=3.6,y=-4.4;1)ab|!(cA)&xy2)a-b&!c-5|y*2x结果:1)0 2)1,44,例3.7:根据条件写出C的逻辑表达式,1)写出m、n都能被k整除的逻辑表达式。(即如果m、n都能被k整除,表达式值为1,否则为0)m%k=0&n%k=02)写出x、y、z是可以构成三角形三条边的逻辑表达式。x+yz&x+zy&z+yx3)判断字符变量ch中的字符是否为大写字母的逻辑表达式。ch=A&ch=Z说明:&(逻辑与)一般用于判断两个或两个以上的条件是否同时成立。,45,4)写出|x|大于6.25的逻辑表达式。-x6.255)写出x、y不同时为零的逻辑表达 x!=0|y!=0说明:|(逻辑或)一般用于判断两个或两个以上的条件是否至少有一个成立,46,6)“判断y是闰年”。凡能被4整除不能被100整除的是闰年或能被400整除的是闰年.y%4=0&y%100!=0|y%400=07)判断“x、y落在圆心(0,0)半径为1的圆外和中心点为(0,0)边长为4的矩形内”的表达式.,x*x+y*y1&x=-2&x=-2&y=2,47,运算符和表达式总结(注意:优先级、结合性、操作对象个数)。,48,0 x10不同于0 x&x10,要判断一个变量的值是否在0到10之间,很自然想到了这样一个表达式:scanf(%d,编译通过,但是在运行的时候就会出问题。仔细分析一下if语句的运行过程.正确的写法应该是:if(0a)&(a10)/*如果变量a的值大于0并且小于10*/这样不但编译通过,运行结果也是对的了。,49,执行顺序:首先计算e1的值,1、若为非0(即真值)再计算e2的值,并把e2的值作为整个表达式的值。2、若为 0(即假值),则需计算e3的值并把e3的值作为整个表达式的值。,3.4 其他表达式,3.4.1 条件运算符及条件表达式,e1、e2、e3 分别为任意表达式,50,例3.9 用条件表达式计算。求变量t的符号。f=t=0?1:1;求三个变量最大值 x、y、z。s=(s=xy?x:y)z?s:z;将字符变量ch若为小写字母则改为大写字母,其余字符不变。ch=(ch=a&ch=z?ch+Aa:ch),51,条件运算符的优先级和结合性条件运算符是C语言中惟一的三目运算符。条件运算符优先级低于逻辑运算符,高于赋值运算符和逗号运算符。条件运算符具有右结合性。,如:int a=1,b=2,c=3,d=4;ab?a:cd?c:d ab?a:(cd?c:d)结果为4,52,例3.10 输入三个数给变量a,b,c后,按值从大到小输出#includevoid main()int a,b,c;int m,n,k;scanf(“%d%d%d”,输入:5-8 7输出:-8,53,3.4.逗号运算符及逗号表达式1、逗号运算符,(常用 在for语句中)2、逗号表达式 表达式1,表达式2,表达式n功能:自左至右计算各表达式的值,并以最后一个表达式的值作为逗号表达式的值。如:a=2+4,3*5,a的值为,整个表达式的值为,54,.优先级和结合性逗号运算符是所有运算符中级别最低的,运算方向:从左向右例:(,*),*3,赋值表达式,将一个逗号表达式的值赋给,的值等于,逗号表达式,包括一个赋值表达式和一个算术表达式,的值为,整个逗号表达式的值为18。,55,注意:并不是任何地方出现的逗号都是作为逗号运算符。例如函数参数也是用逗号来间隔的。如:printf(“%d,%d,%d”,a,b,c);,“,”并不是一个逗号表达式,它是printf函数的3个参数,printf(“%d,%d,%d”,(a,b,c),b,c);,“(,)”是一个逗号表达式,它的值等于的值。,56,3.5 多种类型混合运算,C语言中,允许不同类型的数据进行混合运算,包括整型(int,short,long)、实型(float,double)、字符型(char)数据都可以进行混合运算。例如:10+a+15-87651234*b 是合法的。在进行运算时,不同类型的数据要先转换成同一类型,然后再运算求值。,57,表达式中数据类型的转换可分为两种:数据类型的隐式转换(自动转换)数据类型的强制转换类型转换在C中也属于一种运算。,58,(1)自动转换在进行算术运算过程中,两个参加运算的操作数,在计算前先自动进行类型转换。,水平方向:自动垂直方向:低 高,3.5.1 算术运算中的类型转换,59,例:A+12 65 77,规则1:凡char,short型一律自动转换成int型,float一律转换成double型,转换后若两操作数类型相同,作算术运算,其结果类型与转换后的类型相同。,1.5f*4.2 1.5f转换为double型,计算结果6.3 为double型,60,规则2:相同类型的操作数(除char,short,float 型外)作算术运算的结果为同一类型。,例:两个整数的除法其结果一定是整数。5/2结果为2,-5/2结果为-2。,61,规则3:不同类型的操作数或经规则1转换后仍然是不同类型,则低级别的自动转换成高级别的再运算,其结果类型与转换后的类型相同。char shortintunsigned longunsigned longfloatdouble,62,例3.11 2.0f+5/2*3 2 6 2.0 6.0 8.0,规则,规则,规则,规则,63,可以利用强制类型转换运算符将一个表达式转换成所需类型。,(类型名)表达式强制类型转换运算符优先级同+,高于算术运算符,从右向左如:(double)3(int)3.8(double)(5/2)(double)5/2,3.032.02.5,(2)强制类型转换,64,例.12#include void main()float;int i;x=3.6;i=(int)x;printf(x=%f,i=%dn,x,i);,说明:强制类型转换,对被转换变量本身没有影响(既不改变变量的类型,也不改变变量值的类型),只生成一个中间计算结果。,运行结果:x3.600000,i=3,说明:有两种类型转换,一种是在运算时不必用户指定,系统自动进行的类型转换。第二种是强制类型转换。当自动类型转换不能实现目的时,可以用强制类型转换。,65,赋值时数据类型的转换,在赋值语句中,左边变量和右边表达式的类型不同时,系统会自动完成类型转换。将赋值运算符右侧表达式的类型自动转换成赋值号左侧变量的类型,再赋值。如:int x=3;则表达式x=x+1.999的值是4。,66,数据类型的赋值转换规则表,67,常见的几种赋值时的数据类型转换,字符数据赋值给整型变量(char-int),例:int z;z=b;/即字符b的ASCII码值赋给z变量),整数赋值给实型变量(int-float)例:float z;z=39;/z的值即为39.000000,68,常见的几种赋值时的数据类型转换,实数赋值给整型变量(float-int)例 int x;x=3.89;/取整数,舍弃小数如果值超过变量的取值范围,可能整数部分数据会丢失。,69,3.5.3 运算符优先级和运算符结合方向,C语言的运算符有种优先级和两种结合性。运算级别高的先计算,再进行运算级别低的运算。在运算符优先级相同时,运算顺序由结合性决定。表达式中可以通过增加括号来改变运算顺序。,

    注意事项

    本文(c语言运算符和表达式.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开