资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,http:/,四川农业大学计算机系 新航线培训,第二章,运算符与表达式,http:/,2.1 C,语言运算符简介,初,等运算符,(),-,.,1,自左至右,(一),单目运算符,!+-(,类型,)*&,sizeof,2,自右至左,算,数运算符,*,/%,3,自左至右,+-,4,自左至右,(,左移右移运算符),5,自左至右,关,系运算符,=,6,自左至右,=!=,7,自左至右,&,(按位与运算符),8,自左至右,(按位异或运算符),9,自左至右,|,(按位或运算符),10,自左至右,逻,辑运算符(不包括!),&,11,自左至右,|,12,自左至右,(挑)条,件运算符,?:,13,自右至左,(胡)赋,值运算符,=+=-=*=/=%=9,的值为,0,,,97,的值为,1,,,7+9,的值为,16,逗号运算符和逗号表达式,一般形式为:,表达式,1,,表达式,2,,表达式,3,,,,表达式,n,逗号表达式,的值:,等于表达式,n,的值,如:,x=,(,7+8,,,9,,,80,),x,的值为,80,2.1 C,语言运算符简介,5.5%2,2.2,算术运算符和算术表达式,基本算术运算符:,+-*/%,取整,:,两整数相除,结果为整数,例,:5/2=2 3/4=0,区别:,-5/2.0=-2.5 3.0/4=0.75,取余,(%):,两整数相除,结果为他们的余数;,要求两侧必须都为整型数据,。,如:,-5%2=-1 1%10=1 5%1=0,区别,(,int,),5.5/2,例:求出整数,457,的个位、十位、百位。,分析:,1.,求个位的方法:,457%10,2.,求十位的方法:,457/10%10,3.,求百位的方法:,457/100,或,457/10/10%10,2.2,算术运算符和算术表达式,定理:,1.,任何一个整数除以,10,取整则去掉这个整数的个位,2.,任何一个整数除以,10,取余则得到这个整数的个位,自增自减运算符,2.2,算术运算符和算术表达式,作用:使变量的值增,1,或减,1,。,前置:,(,先执行,i=i+1,或,i=i-1,,再使用,i,值),如:,i=1,;,a=+i,;,a=2,;(,i=2,),i=1;a=-i;a=0;(i=0),后置:,(,先使用,i,值,再执行,i=i+1,或,i=i-1,),如:,i=1,;,a=i+,;,a=1,;(,i=2,),i=1,;,a=i-,;,a=1,;(,i=0,),+-,不能用于常量和表达式,如:,5+,,,(,a+b,)+,2.3,赋值运算符和赋值表达式,简单赋值运算符,=,如:,a=9,复合赋值运算符:,+=-=*=/=%=&=|=,例:,a,=5,a=a,a*=c,5,a=a*(c+5),=,左侧必须是变量,不能是常量或表达式,结合方向:自右向左,例:,int,x,,,y,;,x=3,;,y=5,;,表达式,x,=y/=2,的值为?,x%=y/=2,先算,y/=2,y=5/2 y=2,再算,x%=2,x=3%2 x=1,求表达,a+=a-=a*=a,的值,其中,a,的初值,12,。,2.3,赋值运算符和赋值表达式,分析:先算,a*=a -a=a*a=144,(,a,的值已经被修改为,144,),再算,a-=144-a=a-144=0,(,a,的值已经被修改为,144,),最后算,a+=0,所以 表达式,a+=a-=a*=a,的值为,0,赋值运算中的类型转换,2.3,赋值运算符和赋值表达式,(1),当实型数据赋值给整型变量时,将实型数据的小数部分截断。,如,int,x,;,执行“,x=5.21,;”后,,x,的值为,5,。,(2),当整型数据赋值给实型变量时,数值不变,但以浮点数形式,存储到实型变量中。,如,float x=45,;,输出,x,的结果为,45.000000,。,(3),当整型、短整型、长整型数据赋值给一个,char,类型变量时,将其低,8,位原封不动地送到,char,类型变量中,(,即截断,),。,低字节和高字节,1,个字节,=8,个二进制位,2,个字节,=16,个二进制位,如:,int,a=256,;,256,转换为二进制:,1,00000000,但,a,是整型变量所以又可以表示为:,0000000,1,00000000,共,16,个二进制位,右边的二进制位称为低位,构成字节的称低字节,左边的二进制位称为高位,构成字节的称高字节,最高位为,1,时表示负数,为,0,时表示正数。,2.3,赋值运算符和赋值表达式,2.4,位运算,位运算就是指对存储单元二进制位的运,,只能对整型或字符型数据进行位运算,不能用于实型数据。,“按位与”运算符(&),1)规则:,参与运算的两数(负数以补码方式出现),各对应的二进位相与,,只有对应的两个二进位均为1时,结果位才为1,否则为0,它是双目运算符。,即:0&0=0;0&1=0;1&0=0;1&1=1。,例如:,9&5可写算式如下:,9的二进制:0 0 0 0 1 0 0 1,5的二进制:0 0 0 0 0 1 0 1,&_,0 0 0 0 0 0 0 1,可见9&5=1。,“按位与”运算符(&),9&5可写算式如下:,9的二进制补码:,11111111,1 1 1 1 0 11 1,5的二进制补码:,11111111,1 1 1 1 1 01 1,&_,-13,的二进制补码,1,1111111,1 1 1 1 0 01 1,可见9&5=13。,(2)特殊用途:清零、取指定位,补码:存放负数的方法。,表示方式:先将负数取绝对值后再转换为二进制,然后将二进制按位求反再加一。,“,按位或,”,运算符(|),(1)规则,参与运算的两数(负数以补码出现)各对应的,二进位相或,(即逻辑加)。只要对应的两个二进位有一个为1时,结果位就为1,它是双目运算符。,即:0|0=0;0|1=1;1|0=1;1|1=1。,例如:9|5:0 0 0 0 1 0 0 1,0 0 0 0 0 1 0 1,|_,0 0 0 0 1 1 0 1 (十进制13),可见9|5=13。,“,按位或,”,运算符(|),(2)特殊用途,将一个数据的某些指定的位,置为1,。,将该数按位或一个特定的数,该特定的数的相应位置为1。,“,按位异或,”,运算符,(),(1,)规则,参与运算的两数(负数以补码出现)各对应的,二进位相异或,,当两对应的二进位相异时,结果为1,它是双目运算符。即:,00=0;01=1;10=1;11=0。,例如:95 :,0 0 0 0 1 0 0 1,0 0 0 0 0 1 0 1,_,0 0 0 0 1 1 0 0 (十进制12),可见95=12。,“,按位异或,”,运算符,(),(2)特殊用途,使特定位翻转,要使哪几位翻转就将与其进行“按位异或”运算的数的相应位置为1。,使特定位保留原值,要使哪几位保留原值就将与其进行“按位异或”运算的数的相应位置为0。,交换两个值,不用临时变量,a=,ab;b,=,ab;a,=,ab,;,“,求反,”,运算符(),1)规则,对参与运算的数的各二进位,按位求反,,它是单目运算符,具有右结合性。,即:,0=1;1=0。,例如:9的运算为,00000000,00001001,-,11111111,11110110,“,求反,”,运算符(),(2)用途,适当的使用可增加程序的移植性,。,“,左移,”,运算符(),1)规则,二进位全部左移若干位,,由“”右边的数指定移动的位数,,高位丢弃,低位补0,,它是双目运算符。,例如:,a4,指把,a,的各二进位向左移动4位。如,a=00000011(,十进制3),左移4位后为00110000(十进制48)。,“,左移,”,运算符(),(1)规则,二进位全部,右移若干位,,“”右边的数指定移动的位数。,(2)特殊用途,右移1位相当于该数除以2;右移,n,位相当于该数除以2,n,。,n,“,右移,”,运算符(),(3),说明,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0;而为负数时,符号位为1,最高位是,补0还是补1取决于计算机系统的规定,。移入0的称为,“,逻辑右移,”,;移入1的称为,“,算术右移,”,。我们可以通过编写程序来验正所使用的系统是采用,“,逻辑右移,”,还是,“,算术右移,”,。,很多系统规定为补1,即,“,算术右移,”,(,vc,也是,),。,如:,a:,10010111,11101101,a1:,0,1001011 11110110 (,逻辑右移),a1:,1,1001011 11110110 (,算术右移),位复合赋值运算符,运算符,名称,例子,等价于,&=,位与赋值,a&=b,a=a&b,|=,位或赋值,a|=b,a=a|b,=,位异或赋值,a=b,a=ab,=,右移赋值,a=b,a=ab,=,左移赋值,a=b,a=ab,
展开阅读全文