C语言课件(运算符和表达式).

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

运算符与表达式运算符和表达式第二讲运算符和表达式引例概念及分类优先级和结合性算术运算关系运算逻辑运算位运算赋值运算符逗号运算符条件运算符运算符和表达式引例引例问题输入一个四位的正整数,反序输出该四位数的四个数字字符。设计用一个无符号整型变量number保存输入的四位正整数。依次分解出个位数字、十位数字、百位数字和千位数字,并分别放到字符变量c1、c2、c3和c4中。怎么分解?–利用除法、取模等运算。顺序输出变量c1、c2、c3和c4中的字符。运算符和表达式引例引例源程序(cw04-01.c)#includestdio.hvoidmain(){unsignednumber;charc1,c2,c3,c4;printf(请输入一个四位的正整数:);scanf(%u,&number);c1=number%10+'0';//得到个位数字c2=number/10%10+'0';//得到十位数字c3=number/100%10+'0';//得到百位数字c4=number/1000+'0';//得到千位数字printf(\n%c%c%c%c\n,c1,c2,c3,c4);}请输入一个四位的正整数:12344321运算符和表达式相关概念运算符在C语言中用来表示某种计算的符号。操作数运算符操作的对象,可以为变量(已赋值)、常量或其他有切确值的表达式。表达式运算符和合适的操作数组成的具有切确值的式子称为表达式。运算符和表达式运算符分类单目运算符(一元运算符)只有1个操作数。双目运算符(二元运算符)具有2个操作数。(主要类型)三目运算符(三元运算符)需要3个操作数。(唯一:条件运算符?:)运算符和表达式运算符的优先级和结合性运算符的优先级某些运算符先于其他运算符被执行。例如,x+y*4,先乘除后加减。必要时可以用圆括号()改变计算顺序。例如,求三个数的平均值。错误的写法:a+b+c/3正确的写法:(a+b+c)/3运算符的结合性当出现并列的运算优先级别相同的运算符时,由运算符的结合性决定计算的次序。例如,x*y/z运算符和表达式算术运算符常用的算术运算及运算符说明取模运算(%),结果是两个整数相除的余数。例如,7%5=2,-2%3=-2。运算符和表达式运算符名称算术运算符代数表达式C语言表达式适用的数据类型正号++a+a整数、字符、浮点数负号--b-b整数、字符、浮点数加+f+7f+7整数、字符、浮点数减-p–cp–c整数、字符、浮点数乘*bmb*m整数、字符、浮点数除/x/yx/y整数、字符、浮点数取模%rmodsr%s整数、字符运算符和表达式自增和自减运算符自增和自减运算符自增运算符:++将操作数的值增一。自减运算符:--将操作数的值减一。操作数必须是整型和字符型变量。单目运算符。优先级:2。结合性:从右往左。运算符和表达式运算符和表达式算术运算符(特殊问题)除号运算符的使用问题当除号前后操作数全为整型数(包括char、int、long)时,除号为整除运算。当有任一操作数为实型数时则为普通除法运算。取模运算符的使用问题操作数只能整型数据(char、int、long)。自加/自减运算符的使用问题++(--)在前:先加(减)后用;++(--)在后:先用后加(减)。运算符和表达式自增和自减运算举例(cw0404.c)#includestdio.hvoidmain(){inti=6,a,b;printf(%d\n,++i);printf(%d\n,i++);a=--i;printf(%d\n,a);b=i--;printf(%d\n,b);printf(%d\n,-i++);printf(i=%d\n,i);}7777-6i=?运算符和表达式关系运算关系运算(比较运算)比较两个值,结果为“真”或“假”。举例:a3如果a=8,则结果为“真”如果a=1,则结果为“假”用关系运算进行条件判断关系表达式表示一个条件,根据其结果判断条件是否满足。举例:a3如果a=8,结果为“真”,即条件满足如果a=1,结果为“假”,即条件不满足运算符和表达式关系运算符关系运算符运算符含义优先级结合性小于6左结合=小于或等于大于=大于或等于==等于7!=不等于运算符和表达式关系表达式关系表达式表达式1关系运算符表达式2表达式1和表达式2可以是任何表达式。举例abm+n=20c!=‘y’(xz)==(yz)运算符和表达式关系表达式关系表达式的值是一个逻辑值:“真”或“假”C语言没有逻辑类型,因此用整数1表示“真”用整数0表示“假”即关系表达式的值是整数1或0。举例若a=1,b=2,c=3aba+b=c(ac)==(bc)‘Y’!=‘y’0111运算符和表达式关系表达式的使用举例:写出下面各条件的关系表达式x为不小于-5的整数x为非零的数x的平方大于m与n的和x=-5x!=0x*x(m+n)运算符和表达式关系运算的不足关系表达式只能表达一些简单的条件grade=60total1000每个判断只是对一个条件进行测试。如果要对多个条件进行测试就要在独立的语句或嵌套的if或if-else结构中进行测试。例1:10y5例2:x-10或者x0if(y5)if(y10)…;if(x-10)…;if(x0)…;运算符和表达式逻辑运算逻辑运算通过逻辑运算符把简单的条件组合起来,能够形成更加复杂的条件。例1:10y5的逻辑表达式(y5)&&(y10)例2:x-10或者x0的逻辑表达式(x-10)||(x0)逻辑运算符!(逻辑非)&&(逻辑与)||(逻辑或)运算符和表达式逻辑表达式逻辑表达式[表达式1]逻辑运算符表达式2表达式1和表达式2可以是任何表达式。举例(x5)||(x-5)!(ab)&&(m!=n)(a+bc)&&(a+cb)&&(b+ca)逻辑表达式的值1:真0:假整数运算符和表达式逻辑运算逻辑运算真值表a!a1001aba&&b111100010000aba||b111101011000!&&||运算符和表达式逻辑表达式的使用将下面的条件用C语言的逻辑表达式表示例1:1≤x≤10且x≠7x=1&&x=10&&x!=7例2:y能被4整除,但不能被100整除(y%4==0)&&(y%100!=0)逻辑与和逻辑或具有短路能力例1:gender==‘F’&&age=65如果gender不等于’F’,整个表达式的值就是假,求值过程结束。例2:average=90||finalExam=90如果average大于等于90,整个表达式的值就是真,求值过程结束。运算符和表达式程序设计举例举例(cw0602.c)问题:任意输入一个字符,判断它是字母还是数字。#includestdio.hvoidmain(){charc;c=getchar();if((c=‘A’&&c=‘Z’)||(c=‘a’&&c=‘z’))printf(“%cisaletter.”,c);elseif(c=‘0’&&c=‘9’)printf(“%cisadigit.”,c);elseprintf(“%cisneitheraletternoradigit.”,c);}运算符和表达式位运算位左移,位右移,位与&,位或|,位异或^位运算按二进制数运算法则进行计算将另立专题讲解运算规则运算符和表达式赋值运算赋值运算符简单赋值运算符:=复合赋值运算符:+=,-=,*=,/=,%=优先级:14结合性:从右往左赋值表达式变量赋值运算符表达式d=23作用:将表达式的值赋给变量。赋值表达式的值就是被赋值的变量的值。运算符和表达式运算符和表达式简单赋值运算简单赋值运算符:=举例类型转换如果赋值运算符右边表达式的类型与左边变量的类型不一致,则把右边表达式值的类型按左边变量的类型进行转换,然后再赋值。例如,intn=3.6;n的值为3。运算符和表达式c=a+ba=b=c=d=10x=(a=5)+(b=8)a=(a+b)a=(b=(c=(d=10)))a=5,b=8,x=a+b运算符和表达式复合赋值运算复合赋值运算符:+=,-=,*=,/=,%=简化了赋值表达式variableoperator=expression由下面的表达式简化而来variable=variableoperatorexpression举例运算符和表达式a+=5x*=y+7x+=x-=x*=xa=a+5x=x*(y+7)x=x+(x=x-(x=x*x))≡运算符和表达式逗号运算符逗号运算符:,优先级:15。结合性:从左往右。逗号表达式表达式1,表达式2,…,表达式nx=1,(a=b+1),i++求解过程:先求表达式1的值,再求表达式2的值,···,直至求出表达式n的值。表达式的值为表达式n的值。运算符和表达式条件运算符条件运算符:?:三目运算符右结合条件表达式表达式1?表达式2:表达式3举例printf(“%s”,(grade=60)?“Passed”:“Failed”);(grade=60)?printf(“Passed”):printf(“Failed”);c=ab?a:b;运算符和表达式小结运算符的相关概念运算符的分类按操作数个数分按操作类型分各类运算符及表达式知识优先级和结合性总结

1 / 29
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功