c语言运算符和表达式.ppt
《c语言运算符和表达式.ppt》由会员分享,可在线阅读,更多相关《c语言运算符和表达式.ppt(69页珍藏版)》请在三一办公上搜索。
1、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语言中,除了控制语
2、句和输入输出以外的几乎所有的基本操作都是用运算符来实现的。例如:赋值操作的功能,在C语言中是用赋值运算符“=”来实现的。,5,C语言的运算符按照其功能分为以下13类:算术运算符+-*/%+-下标运算符 关系运算符!分量运算符-逻辑运算符!|强制类型转换运算符(类型)赋值运算符 及其扩展赋值运算符 求字节数运算 sizeof 条件运算符?:位运算符|逗号运算符,指针运算符*其他运算符 如函数调用运算符(),6,学习运算符,主要掌握以下4点:,运算符操作的数据的类型。不同的运算符操作的数据的类型不一定相同;而且每种运算符操作的数据的类型是相对固定的。运算符操作的数据的个数。不同的运算符操作的数据的
3、个数不一定相同;根据运算符连接运算对象的个数,一般分为单目运算符(如+、-)、双目运算符(如*/%)和三目运算符(如?:)。,7,运算符在整个运算符系统中的优先级。优先级是指在运算对象的左右都有运算符时运算的先后次序。运算对象先做优先级高的运算。如:*/比+-优先级高。运算符操作的数据的结合性。运算符的结合性规定了在表达式求解过程中,若运算对象其左右运算符优先级相同时的运算方向。结合性有两种:左结合(从左到右计算)和右结合(从右到左计算)。,8,表达式:用运算符将运算对象(常量、变量、函数等)连接而成的式子。如 a*b/c-1.5+a表达式使用时应注意表达式的值及类型。a.不同类型的运算符所表
4、示的表达式类型也是不同的。表达式一般有算术表达式、赋值表达式、关系表达式、逻辑表达式、逗号表达式、条件表达式等表达式。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 算术表达式,(一)基本算术运算符:(加法运算或正号运算符)(减法
5、运算或负号运算符)*(乘法运算符)(除法运算符)%(求余运算符,或称模运算符)+自增运算符-自减运算符,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)字符类型的数据以该
6、字符的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,
7、结果是12;12/10的结果是1;通过整除和求余数交叉应用,可以分解一个整数。这个技巧以后我们要经常使用。小程序:输入一个三位数的整数,请分离出各位,十位,百位,并输出。,15,(二)自增、自减运算符运算符号:+(自增运算符)-(自减运算符)功能:使变量的值增 1 或减 1。用途:常用于循环语句中使循环变量自动加或减。也用于指针变量,使指针指向下或上一个地址。操作数:只能是变量不能是常量、表达式和函数。如:i+,+i,i-,-i 是正确的。+8,+sin(4),(x+y)+是错误的。结合性:自增(减)运算符的结合性是右结合。优先级:单目运算符,优先级高于算术运算符,低于括号类运算符。,16,+
8、、-作用于变量的形式有两种:前缀方式(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
9、,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;print
10、f(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 是
11、一个合法的表达式。,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.赋值运算符
12、左侧只能是变量,不可以是表达式、函数或常变量也不能作为左值。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 复合赋值运算符,双目运算符与赋值运算符的合成或简化,称为复合赋值运算符。语言规定可以使用种复合赋值运算符:,*,|复
13、合赋值运算符的优先级和结合性同赋值运算符。,26,变量 双目运算符=表达式,复合赋值运算符的功能:先将变量与赋值运算符后面的表达式进行一次双目运算符所指定的运算,然后再将运算结果赋给变量。例如:等价于*等价于*()等价于,以“”为例来说明,它相当于使进行一次自加()的操作。即先使加,再赋给。,27,注意:如果=右边是包含若干项的表达式,则相当于它有括号。如:x%=y+3 x%=(y+3)|_ x=x%(y+3)(不要错写成x=x%y+3),复合赋值运算表达式:变量 双目运算符=表达式,是个整体,步骤:1)左边变量的当前值与右边整个表达式进行相应运算。2)把1)的结果赋给左边的变量。3)赋值表达
14、式的值是左边变量的值。,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种
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 运算 表达式
链接地址:https://www.31ppt.com/p-5426566.html