《第2章运算符与表达式优秀课件.ppt》由会员分享,可在线阅读,更多相关《第2章运算符与表达式优秀课件.ppt(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第2章运算符与表达章运算符与表达式式第1页,本讲稿共25页2.1 C语言运算符简介语言运算符简介初初等运算符等运算符()()-.1 1自左至右自左至右(一)(一)单目运算符单目运算符!+-(!+-(类型类型)*&sizeof)*&sizeof2 2自右至左自右至左算算数运算符数运算符*/%*/%3 3自左至右自左至右+-+-4 4自左至右自左至右 (左移右移运算符)左移右移运算符)5 5自左至右自左至右关关系运算符系运算符 =6 6自左至右自左至右=!=!=7 7自左至右自左至右&(按位与运算符)(按位与运算符)8 8自左至右自左至右 (按位异或运算符)(按位异或运算符)9 9自左至右自左至
2、右|(按位或运算符)(按位或运算符)1010自左至右自左至右逻逻辑运算符(不包括!)辑运算符(不包括!)&1111自左至右自左至右|1212自左至右自左至右(挑)条(挑)条件运算符件运算符?:?:1313自右至左自右至左(胡)赋(胡)赋值运算符值运算符=+=-=*=/=%=9的值为的值为0,97的值为的值为1,7+9的值为的值为162.1 C语言运算符简介语言运算符简介第4页,本讲稿共25页5.5%22.22.2算术运算符和算术表达式算术运算符和算术表达式基本算术运算符:+-*/%取整取整(/):两整数相除,结果为整数(两整数相除,结果为整数(两整数相除,结果为整数(两整数相除,结果为整数(去
3、掉小数部分去掉小数部分去掉小数部分去掉小数部分)例例例例:5/2=2 3/4=0 (“/”:5/2=2 3/4=0 (“/”左右两侧均为整型数据左右两侧均为整型数据左右两侧均为整型数据左右两侧均为整型数据)除除法法(/)只要有实型数据就是除法运算只要有实型数据就是除法运算只要有实型数据就是除法运算只要有实型数据就是除法运算例:例:例:例:-5/2.0=-2.5 3.0/4=0.75-5/2.0=-2.5 3.0/4=0.75取余取余(%):两整数相除,结果为他们的余数;两整数相除,结果为他们的余数;要求要求要求要求“%”%”两侧必须都为整型数据两侧必须都为整型数据两侧必须都为整型数据两侧必须都
4、为整型数据 如:如:如:如:-5%2=-1 1%10=1 5%1=0-5%2=-1 1%10=1 5%1=0区别:(int)5.5/2第5页,本讲稿共25页例:求出整数例:求出整数457的个位、十位、百位。的个位、十位、百位。分析:分析:1.求个位的方法:求个位的方法:457%10 2.求十位的方法:求十位的方法:457/10%10 3.求百位的方法:求百位的方法:457/100 或或457/10/10%102.2算术运算符和算术表达式定理:1.任何一个整数除以10取整则去掉这个整数的个位 推理:除以100取整则去掉个位和十位 2.任何一个整数除以10取余则得到这个整数的个位 推理:除以100
5、取余则得到个位和十位#includemain()int a=457;printf(去掉个位后的数=%d,a/10);printf(n去掉个位和十位后的数=%d,a/100);printf(n得到个位的数=%d,a%10);printf(n得到个位和十位的数=%dn,a%100);“%d”为格式符,表示:屏幕输出显示时出现“%d”的地方用逗号后面的一个整数值替换。第6页,本讲稿共25页v自增自减运算符自增自减运算符 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)
6、后置:(先使用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)+#includemain()int a,i=1;a=+i;printf(前置时前置时:a=%d i=%d,a,i);i=1;a=i+;printf(n后置时后置时:a=%d i=%dn,a,i);第7页,本讲稿共25页2.32.3赋值运算符和赋值表达式赋值运算符和赋值表达式简单赋值运算符简单赋值运算符简单赋值运算符简单赋值运算符 =如:如:如:如:a=9a=9a=9a=9复合赋值运算符:复合赋值运算符:复合赋值运算符:复合赋
7、值运算符:+=-=*=/=%=&=|=+=-=*=/=%=&=|=+=-=*=/=%=&=|=+=-=*=/=%=&=|=例:例:例:例:a a a a=5=5=5=5 a=a a=a a=a a=a a*=ca*=ca*=ca*=c5 5 5 5 a=a*(c+5)a=a*(c+5)a=a*(c+5)a=a*(c+5)=左侧必须是变量,不能是常量或表达式左侧必须是变量,不能是常量或表达式左侧必须是变量,不能是常量或表达式左侧必须是变量,不能是常量或表达式结合方向:自右向左结合方向:自右向左结合方向:自右向左结合方向:自右向左例:int x,y;x=3;y=5;表达式 x=y/=2的值为?x%
8、=y/=2x%=y/=2先算先算y/=2y/=2 y=5/2 y=2y=5/2 y=2再算再算 x%=2 x%=2 x=3%2 x=1 x=3%2 x=1 第8页,本讲稿共25页2.32.3赋值运算符和赋值表达式赋值运算符和赋值表达式求表达求表达a+=a-=a*=a的值,其中的值,其中a的初值的初值12。分析:先算a*=a -a=a*a=144(a的值已经被修改为144)再算 a-=a*=a 因为a*=a的值为144 所以化简为 a-=144-a=a-144=0(a的值已经被修改为144)最后算a+=0 所以 表达式a+=a-=a*=a的值为0第9页,本讲稿共25页v赋值运算中的类型转换赋值运
9、算中的类型转换 2.3赋值运算符和赋值表达式(1)当实型数据赋值给整型变量时,将实型数据的小数部分截断。当实型数据赋值给整型变量时,将实型数据的小数部分截断。如如int x;,执行执行“x=5.21;”后,后,x的值为的值为5。(2)当整型数据赋值给实型变量时,数值不变,但以浮点数形当整型数据赋值给实型变量时,数值不变,但以浮点数形式式存储到实型变量中。存储到实型变量中。如如float x=45;输出输出x 的结果为的结果为45.000000。(3)当整型、短整型、长整型数据赋值给一个当整型、短整型、长整型数据赋值给一个char类型变量时,类型变量时,将其低将其低8位原封不动地送到位原封不动地
10、送到char类型变量中类型变量中(即截断即截断)。第10页,本讲稿共25页2.4逗号运算符和逗号表达式逗号运算符和逗号表达式v逗号运算符(逗号运算符(,)和逗号表达式)和逗号表达式一般形式为一般形式为 表达式表达式1,表达式表达式2,表达式表达式3,表达式表达式n逗号表达式的值:逗号表达式的值:等于表达式等于表达式等于表达式等于表达式n n的值的值的值的值如:如:x=(7+8,9,80)x的值为的值为80(x=7+8,9,80)x的值为的值为15 括号内的值为括号内的值为80第11页,本讲稿共25页2.4 位运算位运算 位运算就是指对存储单元二进制位的运位运算就是指对存储单元二进制位的运 ,只
11、能对整型或字符型数据进行位运算,只能对整型或字符型数据进行位运算,不能用于实型数据。不能用于实型数据。第12页,本讲稿共25页“按位与按位与”运算符运算符(&)1 1)规则:)规则:)规则:)规则:参与运算的两数(负数以补码方式出现)参与运算的两数(负数以补码方式出现)参与运算的两数(负数以补码方式出现)参与运算的两数(负数以补码方式出现)各对应的二进位各对应的二进位各对应的二进位各对应的二进位相与相与相与相与,只有对应的两个二进位均为,只有对应的两个二进位均为,只有对应的两个二进位均为,只有对应的两个二进位均为1 1时,结果位才为时,结果位才为时,结果位才为时,结果位才为1 1,否则为否则为
12、否则为否则为0 0,它是双目运算符。,它是双目运算符。,它是双目运算符。,它是双目运算符。即:即:即:即:0&0=00&0=0;0&1=00&1=0;1&0=01&0=0;1&1=11&1=1。例如:例如:例如:例如:9&59&5可写算式如下:可写算式如下:可写算式如下:可写算式如下:9 9的二进制:的二进制:的二进制:的二进制:0 0 0 0 1 0 0 10 0 0 0 1 0 0 15 5的二进制:的二进制:的二进制:的二进制:0 0 0 0 0 1 0 10 0 0 0 0 1 0 1&_&_ 0 0 0 0 0 0 0 10 0 0 0 0 0 0 1可见可见可见可见9&5=19&5
13、=1。第13页,本讲稿共25页“按位与按位与”运算符运算符(&)9&9&5 5可写算式如下:可写算式如下:可写算式如下:可写算式如下:9 9的二进制补码:的二进制补码:的二进制补码:的二进制补码:1111111111111111 1 1 1 1 0 11 1 1 1 1 1 0 11 15 5的二进制补码:的二进制补码:的二进制补码:的二进制补码:1111111111111111 1 1 1 1 1 01 1 1 1 1 1 1 01 1&_&_-13-13的二进制补码的二进制补码的二进制补码的二进制补码 11111111 11111111 1 1 1 1 0 01 11 1 1 1 0 01
14、 1可见9&5=13。(2 2)特殊用途:)特殊用途:清零、取指定位清零、取指定位补码:存放负数的方法。表示方式:先将负数取绝对值后再转换为二进制,然后将二进制按位求反再加一。第14页,本讲稿共25页“按位或按位或”运算符(运算符(|)(1 1)规则)规则)规则)规则 参与运算的两数(负数以补码出现)各对应的参与运算的两数(负数以补码出现)各对应的参与运算的两数(负数以补码出现)各对应的参与运算的两数(负数以补码出现)各对应的二二进位相或进位相或(即逻辑加)。只要对应的两个二进位有一个为(即逻辑加)。只要对应的两个二进位有一个为(即逻辑加)。只要对应的两个二进位有一个为(即逻辑加)。只要对应的
15、两个二进位有一个为1 1时,结果位就为时,结果位就为时,结果位就为时,结果位就为1 1 1 1,它是双目运算符。,它是双目运算符。,它是双目运算符。,它是双目运算符。即:即:即:即:0|0=00|0=00|0=00|0=0;0|1=10|1=10|1=10|1=1;1|0=11|0=11|0=11|0=1;1|1=11|1=11|1=11|1=1。例如:例如:例如:例如:9|5 9|5 9|5 9|5:0 0 0 0 1 0 0 10 0 0 0 1 0 0 10 0 0 0 1 0 0 10 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0
16、0 0 0 1 0 1 0 0 0 0 0 1 0 1|_|_ 0 0 0 0 1 1 0 1 (0 0 0 0 1 1 0 1 (0 0 0 0 1 1 0 1 (0 0 0 0 1 1 0 1 (十进制十进制十进制十进制13)13)13)13)可见可见可见可见9|5=139|5=139|5=139|5=13。第15页,本讲稿共25页“按位或按位或按位或按位或”运算符(运算符(运算符(运算符(|)(2 2)特殊用途)特殊用途 将一个数据的某些指定的位将一个数据的某些指定的位置为置为1 1。将该数按位或一个特定的数,该特定将该数按位或一个特定的数,该特定的数的相应位置为的数的相应位置为1 1。
17、第16页,本讲稿共25页“按位异或按位异或”运算符运算符()()(1 1)规则)规则 参与运算的两数(负数以补码出现)各对应的参与运算的两数(负数以补码出现)各对应的参与运算的两数(负数以补码出现)各对应的参与运算的两数(负数以补码出现)各对应的二进位相异或二进位相异或二进位相异或二进位相异或,当两对应的二进位相异时,结果为当两对应的二进位相异时,结果为当两对应的二进位相异时,结果为当两对应的二进位相异时,结果为1 1,它是双目运算符。即:,它是双目运算符。即:,它是双目运算符。即:,它是双目运算符。即:00=000=0;01=101=1;10=110=1;11=011=0。例如:例如:例如:
18、例如:95 95 :0 0 0 0 1 0 0 10 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 _ _ 0 0 0 0 1 1 0 0 (0 0 0 0 1 1 0 0 (十进制十进制十进制十进制12)12)可见可见可见可见95=1295=12。第17页,本讲稿共25页“按位异或按位异或”运算符运算符()()(2)特殊用途)特殊用途)特殊用途)特殊用途使特定位翻转使特定位翻转使特定位翻转使特定位翻转 要使哪几位翻转就将与其进行要使哪几位翻转就将与其进行要使哪几位翻转就将与其进行要使哪几位翻转就将与其进行“按位异或按位异或按位异或按位异或”运算运
19、算运算运算的数的相应位置为的数的相应位置为的数的相应位置为的数的相应位置为1。使特定位保留原值使特定位保留原值使特定位保留原值使特定位保留原值 要使哪几位保留原值就将与其进行要使哪几位保留原值就将与其进行要使哪几位保留原值就将与其进行要使哪几位保留原值就将与其进行“按位异或按位异或按位异或按位异或”运运运运算的数的相应位置为算的数的相应位置为算的数的相应位置为算的数的相应位置为0 0。交换两个值,不用临时变量交换两个值,不用临时变量交换两个值,不用临时变量交换两个值,不用临时变量 a=ab;b=ab;a=ab;a=ab;b=ab;a=ab;第18页,本讲稿共25页“求反求反”运算符运算符 ()
20、()1)规则)规则 对参与运算的数的各二进位对参与运算的数的各二进位按位求反按位求反,它是单,它是单目运算符,具有右结合性。目运算符,具有右结合性。即:即:0=10=1;1=01=0。例如:例如:9 9的运算为的运算为 00000000 00000000 0000100100001001 -11111111 11111111 11110110 11110110 第19页,本讲稿共25页“求反求反”运算符运算符 ()()(2 2)用途)用途 适当的使用可增加程序的移植性适当的使用可增加程序的移植性。第20页,本讲稿共25页“左移左移”运算符运算符()()1)规则)规则 二进位全部左移若干位二进位
21、全部左移若干位,由,由“”右边右边的数指定移动的位数,的数指定移动的位数,高位丢弃,低位补高位丢弃,低位补0,它是双目运算符。,它是双目运算符。例如:例如:a4指把指把a的各二进位向左移动的各二进位向左移动4位。位。如如a=00000011(十进制十进制3),左移,左移4位后为位后为00110000(十进制十进制48)。第21页,本讲稿共25页“左移左移”运算符运算符()()()(1)规则)规则 二进位全部二进位全部右移若干位右移若干位,“”右边的数指右边的数指定移动的位数。定移动的位数。(2)特殊用途)特殊用途 右移右移1位相当于该数除以位相当于该数除以2;右移;右移n位相当位相当于该数除以
22、于该数除以2n。第23页,本讲稿共25页“右移右移”运算符运算符()()(3 3 3 3)说明)说明)说明)说明 对于有符号数,在右移时,符号位将随同移动。当对于有符号数,在右移时,符号位将随同移动。当对于有符号数,在右移时,符号位将随同移动。当对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补为正数时,最高位补为正数时,最高位补为正数时,最高位补0 0 0 0;而为负数时,符号位为;而为负数时,符号位为;而为负数时,符号位为;而为负数时,符号位为1 1 1 1,最高,最高,最高,最高位是位是位是位是补补补补0 0 0 0还是补还是补还是补还是补1 1 1 1取决于计算机系统的规定
23、取决于计算机系统的规定取决于计算机系统的规定取决于计算机系统的规定。移入。移入。移入。移入0 0 0 0的称为的称为的称为的称为“逻辑右移逻辑右移逻辑右移逻辑右移”;移入;移入;移入;移入1 1 1 1的称为的称为的称为的称为“算术右移算术右移算术右移算术右移”。我们可以通过编。我们可以通过编。我们可以通过编。我们可以通过编写程序来验正所使用的系统是采用写程序来验正所使用的系统是采用写程序来验正所使用的系统是采用写程序来验正所使用的系统是采用“逻辑右移逻辑右移逻辑右移逻辑右移”还是还是还是还是“算术右移算术右移算术右移算术右移”。很多系统规定为补很多系统规定为补很多系统规定为补很多系统规定为补
24、1 1 1 1,即,即,即,即“算术右移算术右移算术右移算术右移”(vc(vc(vc(vc也也也也是是是是)。如:如:如:如:a:a:a:a:10010111 10010111 10010111 10010111 11101101111011011110110111101101a1:a1:a1:a1:0 0 0 01001011 11110110 (1001011 11110110 (1001011 11110110 (1001011 11110110 (逻辑右移逻辑右移逻辑右移逻辑右移)a1:a1:a1:a1:1 1 1 11001011 11110110 (1001011 11110110 (1001011 11110110 (1001011 11110110 (算术右移算术右移算术右移算术右移)第24页,本讲稿共25页位复合赋值运算符位复合赋值运算符运算符名称例子等价于&=位与赋值a&=ba=a&b|=位或赋值a|=ba=a|b=位异或赋值a=ba=ab=右移赋值a=ba=ab=左移赋值a=ba=ab第25页,本讲稿共25页