《数据类型运算符.ppt》由会员分享,可在线阅读,更多相关《数据类型运算符.ppt(38页珍藏版)》请在三一办公上搜索。
1、1 运算符的种类2 算术运算符3 自增自减运算符4 表达式,第二章 数据类型、表达式,退出,1.目的、要求 掌握C的各种数据运算符及优先级;2.重点、难点 自增、自减运算;,算术运算符 用于各类数值运算,包括加(+)、减(-)、乘(*)、除(/)、求余%(或称模运算)。它们是双目运算符,在使用时需要两个运算量参与运算。关系运算符 用于比较运算,包括大于()、小于(=)、小于等于(=)和不等于(!=)六种。逻辑运算符 用于逻辑运算。包括与(&)、或(|)、非(!)三种。,1 运算符的种类,自增、自减运算符 包括+与-。*位操作运算符 参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、
2、位非()、位异或()、左移()六种。赋值运算符 用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)。条件运算符 这是一个三目运算符,用于条件求值(?:)。,逗号运算符 用于把若干表达式组合成一个表达式(,)。指针运算符 用于取内容(*)和取地址(&)二种运算。求字节数运算符 用于计算数据类型所占的字节数(sizeof)。特殊运算符 包括括号(),下标 等。,加法运算符“+”加法运算符为双目运算符,即有两个量参与加法运算。如x+y,5+6等。这与一般的数学加法运算相一致。减法运算符“-”作为减法运算符时为双目运算符,如x-y,6-5等。作为负值运算符时为单目运算,如-
3、y,-8等。乘法运算符“*”双目运算,如x*y,5*6等。,2 算术运算符,除法运算符“/”除法运算符与我们在中学数学中所学的计算规则有很大的不同,与参与运算量的数据类型有关。其一,参与运算量均为整型时,结果也为整型,舍去小数。其二,如果运算量中有一个是实型,则结果为双精度实型。求余运算符(模运算符)“%”该运算的实质是求余数。参与运算的量必须均为整型。求余运算结果的符号与被除数相同(这一点应特别注意),其值等于两数相除后的余数。对于求余运算,应该从其结果的符号和值两方面来理解。,不同数值类型间的混合运算 整型、单精度型、双精度型的不同数值类型可以进行混合运算。因为字符型数值可以看作整型,故整
4、型、实型(包括单精度型与双精度型)及字符型之间可进行混合运算。但是,在运算时,不同类型数值必须转换为同一类型数值。其转换规律是:自动转换(由系统自动进行,无须干预),就高不就低(把低级类型转换为高级类型,再进行运算)。转换等级如下:低级 高级 字符型 整型 浮点型 双精度型,不同类型数据的转换,例.50L+5*a-30.0 long int char float int long double double,自增运算符“+”(两个加号),其作用是把变量的值增加1。自减运算符为“-”(两个减号),其作用是使变量值减少1。自增自减运算符均为单目运算,只需要一个运算量。+i i自增1后再参与其它运算
5、。先加后用。-i i自减1后再参与其它运算。先减后用。i+i先参与运算后,i的值再自增1。先用后加。i-i先参与运算后,i的值再自减1。先用后减。,3 自增自减运算符,取变量的值作为表达式的值:+n:n=n+1,取n的值作为表达式+n的值 n+:取n的值作为表达式n+的值,n=n+1,在使用自增自减运算符时应注意以下几点:只能用于变量,不能用于常量。因为常量的值不能改变。所以不能使用如:10+、8-、-6。如果字符a表示一个常量,则也不能使用a+这样的形式;对于多个变量的运行结果,也不能使用。例如,(x+y+z)+是不能使用的,因为其结果不能保存在其中的任何一个变量中;当自增自减运算符与其他运
6、算符结合使用时,应注意其具有“自右向左”结合的特性。,例:自增及自减运算,#includemain()int x=6,y;printf(x=%dn,x);y=+x;printf(y=+x:x=%d,y=%dn,x,y);y=x-;printf(y=x-:x=%d,y=%dn,x,y);,/*若改为(y=x+;),结果如何?*/,/*若改为(y=-x;),结果如何?*/,7,7,6,7,7,6,6,6,例:分析下面程序段的运行结果:#includemain()int x,y,z;x=3;/*整数3赋给变量x*/y=+x+3;/*计算赋值号右边的表达式,值赋给y变量*/printf(%d%dn,x
7、,y);/*按整数格式输出x和y的值*/z=x+5;/*计算赋值号右边的表达式,值赋给z变量*/printf(%d%dn,x,z);/*按整数格式输出x和z的值*/,运行结果:4 7 5 9,赋值运算符和赋值表达式 1.赋值运算符和赋值表达式 赋值运算符:=赋值表达式:由赋值运算符组成的表达式 形式:变量名=表达式 优先级:只高于逗号运算符,比其它运算符的优先级都低。结合方式:自右向左 例:a=3;,赋值运算符和赋值表达式 2.变量赋初值 变量初始化:在定义变量时用类似赋值的方法给被定义的 变量指定一个初始值。例:int i=10;,赋值运算符和赋值表达式 复合赋值运算 10种复合赋值运算符:
8、+=、-=、*=、/=、%=、=、&=、=、|=将形如:变量名=变量名+表达式 的表达式简化成:变量名+=表达式 的形式优先级和结合方式:与赋值运算符相同。,复合的赋值运算符 赋值运算符前加上其它的运算符构成。使用复合运算符的目的:简化程序和提高编译效率-=:自反减赋值+=:自反加赋值*=:自反乘赋值/=:自反除赋值%=:自反模赋值,#includemain()int a,b=1,c=2;a=b*=c+2;printf(%d,%d,%dn,a,b,c);,例:复合运算符,a=b=b*(c+2);,强制转换与优先级 依据表达式的运算结果可以把它分为整型、实型及字符型等。如果不作特殊处理,表达式结
9、果的数值类型根据数值混合运算的规则进行转换,具体数值有组成表达式的各项计算而得。根据编程的要求,也可以实行强制转换。强制转换格式为:(类型)表达式 使用此格式可以把表达式的值强制转换为(类型)所规定的类型,这种转换不遵照“由低到高”的规则。(类型)可以为:char,int,float,double等。,4 表达式,不同的运算有不同的优先级。表达式的优先规则为:(1).函数计算最优先(2).其次类型转换(3).自增(+)、自减(-)与取反(-)次之(4).先乘除,后加减(5).有括号先算括号内 关于优先级的详细情况,请参考附录。,算术表达式 算术表达式是由算术运算符和括号连接起来的式子。在C语言
10、中使用的算术运算符与中学所学的不同。以“/”表示除,以“*”表示乘。例如:“5/7”表示“5除以7”、“3*4”表示“3乘以4”。赋值运算符和表达式1 简单赋值 赋值运算符记为“=”。其一般形式为:变量=表达式 例如:z=x+y、w=sin(a)+sin(b)、k=i+赋值表达式的功能是计算表达式的值再赋予左边的变量。,2 连续赋值 也可以采用连续赋值的方法,其格式为:变量1=变量2=变量3=.变量n=表达式 此时,计算表达式的值,并赋给这一系列变量。3 赋值语句与赋值表达式 在其它高级语言中,赋值构成了一个语句,称为赋值语句。而在C中,把“=”定义为运算符,从而组成赋值表达式。凡是表达式可以
11、出现的地方均可出现赋值表达式。在C语言中也可以组成赋值语句,因为任何表达式在其未尾加上分号就成为语句。因此如x=8;a=b=c=5;都是赋值语句。,强制类型转换(显式转换)强迫表达式的值转换为指定的数据类型。其一般格式为:(类型标识符)表达式;例如:(float)a;将变量a的值强迫转换为单精度数据类型。(int)(x+y):将(x+y)的值强迫转换为整数类型。注意:1)在强制类型转换中,产生一个中间变量,用于存放其转换后的数值;原变量(表达式)的数据类型不变。2)系统提供的数学函数一般要求参数为double型,在调用这些函数时,就可使用强制类型转换的方法。,逗号运算符和逗号表达式 在C语言提
12、供了一种特殊的运算符号,称为逗号运算符,用来把多个表达式连接起来,相当于一个表达式。其一般形式为:表达式1,表达式2,表达式n 逗号表达式可以嵌套,即表达式1和表达式2 也可以是逗号表达式。整个逗号表达式的最终值等于表达式n的值。,sizeof运算符 sizeof是一个单目运算符,它返回变量或类型的字节长度 例如:float f;sizeof(double)为8 sizeof(float)为4 sizeof(int)为2 sizeof(f)为4 括号内是类型的名字,也可以是已定义的变量名。,例:测定各数据类型的长度,#includemain()printf(char:%d bytesn,siz
13、eof(char);printf(short:%d bytesn,sizeof(short);printf(int:%d bytesn,sizeof(int);printf(long:%d bytesn,sizeof(long);printf(float:%d bytesn,sizeof(float);printf(double:%d bytesn,sizeof(double);,关系运算 关系运算实际上就是比较运算,就是将两值进行比较,判断是否符合给定的条件。比较两个量的运算符称为关系运算符。关系运算符的优先级低于算术运算符,高于赋值运算符。在六个关系运算符中,,=的优先级相同,高于=和!=
14、,=和!=的优先级相同。,5 逻辑运算,关系表达式 由关系运算符连接起来的表达式称为关系表达式,如:a6就是一个关系表达式。具体讲,当a=8时,此关系表达式的值为真。用1表示关系表达式为真,用0表示关系表达式为假。关系表达式的一般形式为:表达式 关系运算符 表达式,5 逻辑运算,逻辑运算符 C语言中提供了三种逻辑运算符。&和|为双目运算符,要求两个运算量。!为单目运算符,要求一个运算量。逻辑运算符和其它运算符优先级的关系可表示如下:!优先于算术运算符和赋值运算符。&、|优先于赋值运算符,但低于算术运算和关系运算。,按照运算符的优先顺序可以得出:ab&cd 等价于(ab)&(cd)!b=c|dc
15、&x+yc)&(x+y)b),逻辑运算的值也为“真”和“假”两种,用“1”和“0”来表示。而参与逻辑运算的量可以是0(表示假)或非0(表示真)。其求值规则如下:与运算:表达式1&表达式2。当表达式1 的值和表达式2的值均为真时,整个与运算表达式的值为真;否则为“假”;或运算:表达式1|表达式2。当表达式1 的值或者表达式2的值有一个真时,整个或运算表达式的值为真;当表达式1 的值或者表达式2的值都为假时则为“假”;非运算:!表达式。当表达式1 的值为真时,非运算表达式的值为假;当表达式的值为假时则为“真”;,逻辑表达式 用逻辑运算符将关系表达式或逻辑量连接起来的表达式叫做逻辑表达式,其一般形式
16、为:表达式 逻辑运算符 表达式 其中的表达式可以又是逻辑表达式,从而组成了嵌套的情形。例如:(a&b)&c 根据逻辑运算符的左结合性,上式也可写为:a&b&c 逻辑表达式的值是各种逻辑运算的最终值,结果只能是“1”和“0”,分别代表“真”和“假”。,条件运算符和条件表达式 条件语句是C语言独有的,它根据条件是否成立而赋予变量不同的值。它有效地增加了程序的效率。条件运算符有以下两个:?和:。它是C语言中唯一的三目运算符,即有三个元素参与运算。由条件运算符组成条件表达式的一般形式为:变量=表达式1?表达式2:表达式3 其求值规则为:如果表达式1的值为真,则把表达式2的值赋给变量,否则把以表达式3的值赋给变量。,使用条件表达式时,还应注意以下几点:条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。条件运算符?和:是一对运算符,必须配对使用;,#includemain()int a,b,c;a=2;b=1;c=ab?a+1:b;printf(a=%d,b=%d,c=%dn,a,b,c);,P28 三、1.2.,作业,