C语言第4章.ppt
第四章 运算符和表达式,第四章 运算符和表达式,4.1 表达式4.2 赋值运算符与赋值表达式4.3 算术运算符与算术表达式4.4 关系运算符与关系表达式4.5 逻辑运算符与逻辑表达式4.6 位逻辑运算符与位逻辑表达式4.7 逗号运算符与逗号表达式4.8 复合赋值运算符4.9 综合运用4.10 实战练习,本章学习内容,4.1 表达式,从表达式的运算符个数来看:简单表达式 复杂表达式,从表达式种类来看:赋值表达式、算术表达式、关系表达式、逻辑表达式 位逻辑表达式、条件表达式、逗号表达式和复合表达式,4.1 表达式,#include int main()int var1,var2,var3;var1=10;var2=5;printf(“The first number is:%dn”,var1);printf(“The second number is:%dn”,var2);var3=var1-5;,printf(“The first number sub 5 is:%dn”,var3);var3=var2+5;printf(“The second number add 5 is:%dn”,var3);var3=var1*var2;printf(“The result of first times second is:%dn”,var3);return 0;,4.1 表达式,注意:表达式返回的结果值是有类型的,隐含的数据类型取决于组成表达式的变量和常量的类型表达式的返回值具有逻辑特性逗号可以作为分隔符,也可以用在表达式中,4.2 赋值运算符与赋值表达式,使用常量为变量赋初值 类型说明符 变量名=常量;例如:int iCount=10;使用表达式为变量赋初值 类型说明符 变量名=表达式;例如:int iCount=3+7;,4.2.1 变量赋初值 声明一个变量时,可以为其赋一个初值,就是将一个常量或者一个表达式的结果赋值给一个变量,4.2 赋值运算符与赋值表达式,注意:赋值运算符左边的变量称为左值,右边的常量或表达式称为右值单个常量、变量、函数都可以看作是表达式,由于常量无法被赋值,所以不是所有的表达式都可以被作为左值使用在声明变量时可以直接为其赋值,也可以在声明变量后,再进行变量的赋值操作,4.2 赋值运算符与赋值表达式,#include int main()int iPrice=10;int iCount;int iValue;iCount=20;iValue=iCount*iPrice;printf(“%d,%d,%dn”,iPrice,iCount,iValue);,4.2 赋值运算符与赋值表达式,4.2.2 自动类型转换(1)参与运算的运算量类型不同(2)赋值运算中,赋值运算符两边的数据类型不同(3)整型数赋给实型(4)整型数赋给长整型,4.2 赋值运算符与赋值表达式,4.2.3 强制类型转换,强制类型转换是通过类型转换运算来实现的,一般形式为:(类型说明符)(表达式);即把表达式的运算结果强制转换成类型说明符所表示的类型,4.2 赋值运算符与赋值表达式,#include int main()char ch;int i;float k=32768;ch=(char)k;i=(int)k;printf(“%d,%d,%fn”,ch,I,k);,4.3 算术运算符与算术表达式,4.3.1 算术运算符,4.3 算术运算符与算术表达式,4.3.2 算术表达式 使用算术运算符的表达式,称为算术表达式,例如:3+5;a-b;x*y;,4.3 算术运算符与算术表达式,结合性:优先级相同的运算符,自左向右运算-左结合性 优先级相同的运算符,自右向左运算-右结合性 算术运算符在优先级相同时,具有左结合性,4.3.3 优先级与结合性,优先级:优先级高的运算符先进行运算 单目运算符的优先级高于双目运算符 双目运算符中,*、/、%的优先级高于+、-,括号可以改变表达式的运算优先级和结合性,4.3 算术运算符与算术表达式,4.3.4 自增/自减运算符,+i;/*相当于i=i+1,i先执行自增1,再参与其他运算*/-i;/*相当于i=i-1,i先执行自减1,再参与其他运算*/i+;/*相当于i=i+1,i参与运算后,i再执行自增1*/i-;/*相当于i=i-1,i参与运算后,i再执行自减1*/,4.3 算术运算符与算术表达式,#include int main()int a,b,c,d;a=100;b=100;c=+a;d=b+;printf(“a=%d,b=%d,c=%d,d=%dn”,a,b,c,d);a=100;b=100;c=-a;d=b-;printf(“a=%d,b=%d,c=%d,d=%dn”,a,b,c,d);return 0;,4.4 关系运算符与关系表达式,4.4.1 关系运算符,4.4 关系运算符与关系表达式,用关系运算符将两个C语言的表达式连接起来的式子称为关系表达式 关系表达式中,使用关系运算符对两个运算数的大小进行比较,返回一个真值或假值,其中真值为1,表示关系成立;假值为0,表示关系不成立 例如:x=3,y=4,z=2,则:x-y z的结果成立,整个表达式(x-yz)的值为1 x+z=y的结果不成立,整个表达式(x+z=y)的值为0,4.4.2 关系表达式,4.4 关系运算符与关系表达式,关系运算符“=”表示的大于或等于,两个条件满足其一,关系就成立;=同理关系运算符“=”表示等于关系,不要与赋值运算符“=”混淆 if(a=10)/*错误,该条件始终成立*/语句块1;,注意,4.4 关系运算符与关系表达式,(1)、=、=、=优先级高于=、!=(3)关系运算符具有左结合性,if(a=b!=100)语句块,if(a=b)!=100)语句块,4.4.3 优先级与结合性,4.5 逻辑运算符与逻辑表达式,逻辑与运算符&、逻辑或运算符|、逻辑非运算符!,4.5.1 逻辑运算符,4.5 逻辑运算符与逻辑表达式,由逻辑运算符连接起来的表达式称为逻辑表达式 逻辑表达式的值只有两个1和0,1表示结果为真,0表示结果为假 例如:result=a/*a为真时,result为真,否则为假*/,4.5.2 逻辑表达式,4.5 逻辑运算符与逻辑表达式,优先级:由下到上,优先级越来越高,4.5.3 优先级与结合性,4.5 逻辑运算符与逻辑表达式,结合性:逻辑非运算符“!”具有右结合性 逻辑与&和逻辑或|具有左结合性,例如:a b&c d 等价于(a b)&(c d)!a=c|d c|x y c)|(x-y)z),4.6 位逻辑运算符与位逻辑表达式,4.6.1 位逻辑运算符,4.6 位逻辑运算符与位逻辑表达式,由位逻辑运算符构成的表达式称为位逻辑表达式 位运算符只能用于整型或字符型数据 优先级:从高到低是:、&、|结合性:按位取反运算符具有右结合性;其他左结合性,4.6.2 位逻辑表达式,4.7 逗号运算符与逗号表达式,例如:a=2,51,4+3,6*9;/*a的值为2*/a=(2,51,4+3,6*9);/*a的值为54*/,一般形式:表达式1,表达式2,表达式n;,求解过程:先求解表达式1,再求解表达式2,一直求解表达式n,最终整个表达式的值就是表达式n的值,逗号运算符的优先级是所有运算符中最低的,4.8 复合赋值运算符,一般形式:变量名 复合赋值运算符 表达式;等价于:变量名=变量名 双目运算符 表达式;例如:a+=5 等价于 a=a+5;x*=y+z 等价于 x=x*(y+z),4.9 综合运用,4.9 综合运用,4.10 实战练习,使用复合运算符计算a+=a*=a/=a-10定义一个变量并初始化为10,分别输出其前置自增、前置自减、后置自增、后置自减运算后的结果书中例4.12重新输入x的值小于a,输出结果,并手动分析计算两个复合表达式,END,