《第三章数据类型运算符优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第三章数据类型运算符优秀PPT.ppt(64页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第三章 数据类型运算符现在学习的是第1页,共64页3 31 1 数据与数据类型数据与数据类型3.1.1 什么是数据和数据类型 数据数据是程序加工、处理的对象,也是加工的结果。数据类型数据类型是程序语言中具有同样的性质的数据集合.整型整型int(integer的缩写)的缩写)字符型字符型 char (character的缩写)的缩写)单精度型单精度型 float 基本类型基本类型 实型实型(浮点型)(浮点型)双精度型双精度型 double 数组类数组类数据类型数据类型 构造类构造类 结构体结构体 struct 共用体共用体 union 枚举类枚举类 enum 指针类指针类 空类型空类型 void
2、现在学习的是第2页,共64页3.2 C语言的基本数据类型及其表示3.2.1 常量与变量1 1常量常量在程序运行中其值不能被改变的量常量区分为不同类型。如 123,456:整型常量 a,A,b,1,0:字符常量 123.0,3.5:实型常量“123”,“A”:字符串常量现在学习的是第3页,共64页例3_1 已知圆半径r,求圆面积和周长的值。#define 3.14159main()int area,perimeter;int r;r=3;area=*r*r;perimeter=2*r;printf(“area=%dn”,area);printf(“perimeter=%dn”,perimeter
3、);v符号PI代替常量3.14159,称为符号常量v符号常量的定义是在编译预处理语句里进行的,称为宏定义v符号常量一般用大写 v符号常量在其作用域内值不能改变(不能被赋值)PI=35;v符号常量在编译时被常量替换 2.符号常量用一个标识符代表一个常量,提高程序的可修改性和灵活性。定义格式:#define 标识符 常量现在学习的是第4页,共64页3.3.变量变量(1)变量:其值可以改变的量。在内存中占据存储单元,在该单元中存放变量的值,必须先定义,后使用。3num90_above*total房间名:变量名(标识符)房间内容:变量值 程序里的一个程序里的一个变量变量可以看成是可以看成是个个存储数据
4、的容器存储数据的容器,它的功能,它的功能就是可以存储数据。就是可以存储数据。现在学习的是第5页,共64页变量的定义格式:类型说明符类型说明符 变量名表;变量名表;定义的变量名称最好和存放数据的意义对应。例:int a,b,c;/*说明a,b,c为整型变量*/char cc;/*说明cc为字符变量*/double x,y;/*说明x,y为双精度实型变量*/现在学习的是第6页,共64页#define PRICE 30 main()int num,total;num=3;total=num*PRICE;printf(“total=%dn”,total);num=4;total=num*PRICE;p
5、rintf(“total=%dn”,total);90numtotal对变量的基本操作有两个:1.“赋值”:向变量中存人数据值。2.“取值”:取得变量当前值、以便在程序运行过程中使用。34120*同一个变量一旦重新赋值,原来的值就不再存在。现在学习的是第7页,共64页3.2.2 3.2.2 整型数据及其表示整型数据及其表示1.整型类型整型数据存储示意图:基本型属性_占据内存单元数属性2_数据最高位意义intshort 2bytes(短)signed 有符号long 4bytes (长)unsigned 无符号现在学习的是第8页,共64页取值范围:取值范围:数据类型占据字节数二进制位取值范围in
6、t2Bytes16-3276832767(-215215-1)shortintsignedintsignedshortintunsignedint065535(0216-1)unsignedshortintlongint4Bytes32-21474836482147483647(-231231-1)signedlongintunsignedlongint04294967295(0232-1)现在学习的是第9页,共64页2.2.整型常量整型常量十进制:123,-456,0八进制:以0开头(零),01,012 0123=(123)8=(83)10十六进制:以0 x开头,0 x123=(123)16
7、=(291)10 0 xF=(f)16=(15)10长整型常量:123L,-456l二进制位(bit):计算机中最小的存储信息单位 字节(Byte):八个二进制位组成的存储单元,是 计算机中最小存取信息单位机器字(word):计算机中存取信息的基本单位,不 同的计算机系统它的长度是不同的现在学习的是第10页,共64页补充:数的存放形式补充:数的存放形式补码补码1.正数不变2.负数各位取反后+1,符号位置1 (34)10 10=(0 0100010)2 (-34)10 10=(1011101)2 +1 (1 1011110)2 4bytes数据 x补码4294967295x+1(-34)10补码
8、:(4294967295341)10(4294967262)10=(ffffffdf)16=(11111111111111111111111111011110)22bytes数据 x补码65535x+1(-34)10补码:(65535341)10=(65502)10=(ffdf)16 =(1111 1111 1101 1110)2现在学习的是第11页,共64页变量的定义格式:类型说明符 变量名表;4.整型数据应用中的几个问题一般放在一个函数的开头部分3.整型变量现在学习的是第12页,共64页问题问题1 1:c c没有定义便使用;没有定义便使用;int c;问题问题2 2:c c应为应为 327
9、70 32770,但实际,但实际 为为 3276632766,发生溢出;,发生溢出;问题问题3 3:c c应为应为long int long int 类型;类型;long int c;现在学习的是第13页,共64页3.2.3 3.2.3 实型数据及其表示实型数据及其表示1.实型类型 实型数据是以浮点数形式存储的,在计算机中按指数形式。如图例:0.12345610-224位(带符号)8位(带符号)(float)(double)(long double)现在学习的是第14页,共64页2.实型常量v十进制形式:由数字和小数点组成;如:0.123,0.0,-54.0v指数形式:由十进制小数形式指数;如
10、:123e3,123E-2 注:注:e e或或E E的前后面须有数字的前后面须有数字 不合法的指数形式:e3,2.1e3.5,.e3,ev在实数常量尾部用后缀符 f(F)代表单精度实数(7位有效位),l(L)代表双精度实数(1819位有效位);例:2.3f,-0.123f,2e-3f,-1.5e4f 为单精度实常量 1256.34L,-0.123l,2e3L 为双精度实常量3.实型变量现在学习的是第15页,共64页4.4.实型数据应用中的误差问题实型数据应用中的误差问题由于机器存储限制,会使实数产生误差理想输出:理想输出:a=12345.6789a=12345.6789,b=0.1234567
11、891234567899e15b=0.1234567891234567899e15实际输出:实际输出:a=12345.678711,b=123456789123456.797000现在学习的是第16页,共64页3.2.3 3.2.3 字符型数据及其表示字符型数据及其表示1.字符型数据 字符型数据在计算机中存储的是ASCII码,占用1 byte。(1)字符“A”的存储形式实际上就是一个整型数65;(2)它可以直接与整型数据进行算术运算、混合运算,与整型变量相互赋值,(3)字符型数据以字符或整数两种形式输出。以字符形式:先将ASCII码值转换为相应的字符,再输出;以整数形式:直接将ASCII的值作
12、为整数输出。现在学习的是第17页,共64页n 换行(LF)t 横向跳格(HT)b 退格(BS)v 竖向跳格 f 走纸换页(FF)r 回车(CR)单引号()反斜杠字符()”双引号(“)0,空(不是0)101 字符A(八进制)x41 字符A(十六进制)2.2.字符字符型常量:型常量:用单引号括起来的一个字符:用单引号括起来的一个字符:普通字符:普通字符:a a,A A ,1 1 等等 (大小写不同大小写不同)转义序列:将反斜杠转义序列:将反斜杠()()后面的字符转变为另外的含义。后面的字符转变为另外的含义。是一种特殊的是一种特殊的字符常量字符常量。用的最多用的最多3.字符型变量:类型名称char:
13、*错误的字符常量表示:,015,n,”A”,ab现在学习的是第18页,共64页“How do you do.”“CHINA”“$123.45”“a”4.4.字符串常量:字符串常量:一对双引号双引号双引号双引号括起来的字符序列字符序列注意:lC规定:每个字符串结尾加一“字符串结束字符串结束”(00)系统自动加上的;“CHINA”:l字符串如果需要存放在变量中,需用字符数组来存放(第7章)C H I N A0字符串结束标志v a与“a”不同aaa 0“a”现在学习的是第19页,共64页5.5.字符数据的应用举例字符数据的应用举例main()int i;char c;i=a;c=97;printf(
14、“%c,%dn”,c,c);printf(“%c,%dn”,i,i);输出结果:a,97 a,97注意:在一定范围内通用注意:在一定范围内通用注意:在一定范围内通用注意:在一定范围内通用(0-127)(0-127)(0-127)(0-127)现在学习的是第20页,共64页3.2.5 3.2.5 指针型数据及其表示指针型数据及其表示v变量与地址的概念程序中:inti=12;floatk;内存中每个字节有一个编号-地址内存编译或函数调用时为其分配内存单元变量是对程序中数据存储空间的抽象变量的地址.20002001200220050000200320043000i122000变量i_pointerk
15、随机指针变量指针型数据:是一个变量在内存中所对应的存储单元的地址值。如2000,2002等,指针变量:用来存放另一存储单元的地址值。现在学习的是第21页,共64页2.2.指针变量的定义指针变量的定义合法标识符指针的目标变量的数据类型表示定义指针变量不是*运算符例 int*p1,*p2;float*q;staticchar*name;注意:1、int*p1,*p2;与int*p1,p2;2、指针变量名是p1,p2,不是*p1,*p23、指针变量只能指向定义时所规定类型的变量4、指针变量定义后,变量值不确定,应用前必须先赋值格式:类型说明符 *变量名;现在学习的是第22页,共64页3.6.1&与*
16、运算符含义:*取指针变量所指向单元的内容&取内存变量的地址 互为逆运算特性:单目运算符 优先级为 2 自右向左结合inti;int*pc;pc-指针变量,它的内容是地址量*pc-指针的目标变量,它的内容是数据&pc-指针变量占用内存的地址.200020010000.3000指针变量pc,用&pc表示地址3000i整型变量i用&i表示地址20002000通过pc=&i将地址2000存入pc的单元中12通过*pc=12存入变量i的单元中200012pci,*pc&pc&i可简单画为:现在学习的是第23页,共64页3.2.6 变量的初始化 通常一个变量是先说明,然后再赋值给它。例:int x,y;x
17、=10;b=20;C规定:可以在定义定义变量的同时使变量初始化初始化,例:float x123.45;/*说明x为实型量且赋初值为123.45*/int a,c=10;/*说明整型变量a,c,并仅给c赋初值10*/int a1=10,b1=6;/*说明整型变量a1,b1;分别赋不同初值*/double Pai=3.14;/*说明Pai为双精度实型变量为赋初值为3.14*/char cha;/*说明字符变量ch,并赋初值为a*/注意注意:对几个变量赋同一个值,必须分别赋值 例:int a=b=c=3;error int a=3;b=3;c=3;ok 说明:变量初始化不是在编译阶段编译阶段完成的而
18、是在程序执行阶段执行阶段执行 本函数时赋以初值的 例:int a=3;int a;a=3;例:int a,b,c=5;int a,b,c;c=5;现在学习的是第24页,共64页变量初始化的应用举例变量初始化的应用举例main()int a;int b;b=a+2;printf(“%d,%dn”,a,b);注意:定义的变量在没有初始化之前有一个不确注意:定义的变量在没有初始化之前有一个不确注意:定义的变量在没有初始化之前有一个不确注意:定义的变量在没有初始化之前有一个不确 定值。定值。定值。定值。a=3;现在学习的是第25页,共64页3.3 算术运算与赋值语句3.3.1 c语言中的运算规则1、运
19、算符 分类分类(按操作数个数分):单目运算:一个运算符连接一个运算对象;(a;!a;+a)双目运算:一个运算符连接两个运算对象;(2312)三目运算:一个运算符连接三个运算对象;ab?a=1:a=-1现在学习的是第26页,共64页分类分类分类分类(作用作用作用作用):算术运算符算术运算符 +-*/%+-*/%自增自减运算符 +-+-赋值与赋值组合运算符赋值与赋值组合运算符 =+=-=*=/=%=|=&=+=-=*=/=%=|=&=关系运算符 =!=逻辑运算符&|!位运算符|&条件运算符?:逗号运算符逗号运算符 ,指针运算符 *&求字节数运算符 size of 强制类型转换运算符强制类型转换运算
20、符 (类型类型)分量运算符 .-下标运算符 其它 ()现在学习的是第27页,共64页2 2、表达式表达式算术表达式 a+b -c自增自减表达式 i+-i关系表达式 a!=b (a+b)(a-b)逻辑表达式 a&(b=c)!a字位表达式 a 2 a&b赋值表达式 a=3 a*=2 a=b=6 逗号表达式 (a+b,a-b)3、优先级和结合性(附录A)优先级:同一表达式中不同运算符进行计算时的先后次序 结合性:针对同一优先级的多个运算符而言,指同一表达式 中相同优先级的多个运算应遵循的运算次序。现在学习的是第28页,共64页表达式运算时的关键问题:表达式运算时的关键问题:表达式运算时的关键问题:表
21、达式运算时的关键问题:(1)算符优先极问题(不同级别算符的计算次序)(2)算符结合次序(优先级平级时的计算次序)(3)算符操作数个数(一目或二目算符)(4)算符对应操作数类型3.3.2 算术运算符和算术表达式1、算术运算符现在学习的是第29页,共64页说明:“+”,“-”运算符单目运算:取正、负值运算;优先级高 双目运算:加、减运算;优先级低除法运算“/”整数(字符)相除结果是整型(商),小数部分全部舍去 实数相除,所得的商也为实数。例如:1/3=0 只取结果的整数部分0,舍去0.333333 15/43 只取结果的整数部分3,舍去0.75 1.0/30.333333 13/4.03.2500
22、00 整数相除时,若不能整除将造成误差,要避免整数直接相除。模运算%也称为求余运算。要求两个运算对象都为整型,其结果是整数除法的余数。例如:5%10=5 10%3=1 -10%3-1现在学习的是第30页,共64页 算术运算符的优先级及结合性如下:算术运算符的优先级及结合性如下:例如表达式 x/(67-(12+y)*a)x/(67-(12+y)*a)的运算顺序是:2、算术表达式 c语言的算术表达式由算术运算符、常数、变量、函数和园括号组成,其基本形式与数学上的算术表达式类似。例如:3十5 12.3423.65*2 -5*(18%4+6)x/(67-(12+y)*a)现在学习的是第31页,共64页
23、 带函数调用的算术表达式。以数学函数的调用为例,c语言把数学计算中常用的计算公式(或算法)抽象定义为一个个的函数,这些函数的集合构成了C语言的数学库(见附录c),在程序中用到相应的函数时只要直接调用即可。例如,数学表达式:sin(x)+cos(y/2)c语言算术表达式:sinsin(x)+coscos(y/2)函数库:(#include)例3-6 下列数学表达式:对应的c语言算术表达式为:现在学习的是第32页,共64页3.3.3 3.3.3 自增、自减运算符(自增、自减运算符(+、)、)(1)+i+i和和i+i+最后都使i=i+1,但顺序不同,意义不同例:int i=3,j;对于j=+i+i;
24、相当于 i+;j=i;对于j=i+i+;相当于 j=i;i+;(2)+,-只能用于变量(不能用于常量和表达式)+3,+(a+b),(x+5)+i(-i)+i(-i):先将i的值加(减)1,然后使用i i+(i-)i+(i-):先使用i,然后将i的值加(减)1开始开始结果结果3 i i4 j j43 i i4 j j3(3)用于+,-运算的可以是有序类型的变量(4)+,-的结合性是自右向左的。现在学习的是第33页,共64页例题1:int i=3,k;k=(i+)+(i+)+(i+);则:k=?i=?相当于 k=i+i+i;k=9k=9 i+;i+;i+;i=6i=6例题2:int i=3,k;k
25、=(+i)+(+i)+(+i);则:k=?i=?相当于 i+;i+;i+;i=6i=6 k=i+i+i;k=18k=18例题3:若i=3 则printf(“%d”,i+i+);则:打印?打印?;i=?;i=?输出:-3 (然后,i i增值为增值为4 4)例题4:若i=3 则printf(“%d”,i+ii+i);则:打印?打印?;i=?;i=?1.i+i+i -+i -取取i i的地址的地址2.i+i+i+i -i -i值加值加1 1为为4 4 3.i+3.i+i -1+i -1的值的值(4)+2(4)+2的值的值(4)(4)得得3 3的值的值8 8。输出:84.表达式计算完成后,求1.i+的
26、i自加1。i增值为:5 一般写为:(i+)+(+i)。现在学习的是第34页,共64页 3.3.4 赋值运算符和赋值表达式1 1、赋值运算符(=)计算赋值运算符“”右边表达式的值,并将计算结果赋给“”左边的变量。2、赋值表达式:变量变量=表达式表达式 计算赋值运算符右边“表达式”的值,将计算结果赋值给赋值运算符左边的“变量”,赋值表达式的值就是赋值运算符左边“变量”的值现在学习的是第35页,共64页3、赋值运算符按自右至左结合顺序(右结合)例1:int a=2,b=3,c=4;a=b=c=5 1.a=b=c=5:c=5,表达式 c=5值为5 2.a=b=c=5:b=5,表达式 b=c=5值为5
27、3.a=b=c=5:a=5,表达式 a=b=c=5值为5 例2:a=b=4+(c=5)1.a=b=4+(c=5):c=5,表达式 c=5值为5 2.a=b=4+(c=5):表达式 4+(c=5)值为9 3.a=b=4+(c=5):b=9,表达式 b=4+(c=5)值为9 4.a=b=4+(c=5):a=9,表达式 a=b=4+(c=5)值为9现在学习的是第36页,共64页4、赋值时的类型转换 当赋值运算符两侧类型不一致,赋值时要进行类型转换。其转换工作由c编译自动完成。转换原则是以“”左边的变量类型为准,即将“”右边的值转换为与“”左边的变量类型致(类型转换)。例 int b=32769;in
28、t i=256;float a=3.5,a1;char c=A;a1=i;i=a;c=i;则 i=3 a=3.500000 b=-32767 a1=256.000000 c=0 floatint 直接舍去浮点数地小数部分(存储空间缩小存储空间缩小)intfloat 按浮点数相应有效位数补小数点后地有效0(扩大扩大)doublefloat 截取前7位double数据给float变量(缩小缩小)intchar 截取int数据地低8位给char变量(缩小缩小)现在学习的是第37页,共64页 3.3.5 组合赋值运算符和组合赋值表达式1、组合赋值运算符 在赋值符(=)之前前加上其它运算符构成组合运算符
29、:运算符 10种:+=,-=,*=,/=,%=,&=,=,|=2、组合赋值表达式 格式:变量名 组合赋值运算符 表达式 功能:变量名=变量名 运算符 表达 例:a a+=+=+=+=3 a=3 a=a+a+3 3 x*=x*=y+8y+8 x=x=x*x*(y+8y+8)右边为一整体,而不等于x=x*y+8现在学习的是第38页,共64页5 a=55 c=5,b=c(5),a=b(5)11 c=6,a=11(5+6)10 b=4,c=6,a=b+c=4+6=1024-12 a-=a*a(a=3-3*3=-6)a+=-6(a=a+a=-12)3、赋值运算符按自右至左结合顺序 表达式 表达式值 各变
30、量值求解过程求解过程a=5 a=b=c=5 a=5+(c=6)a=(b=4)+(c=6)a*=3+5 a+=a-=a*ainta=3,b,c;现在学习的是第39页,共64页a=b=d=x=y=a=c=*课后作业例:int a=3,b,d=012;char c;float x,y;表达式 各变量的值1)a=2.8 2)b=3+d+3)x=3.6+3/5 4)y=(d=4,d+2,d-)5)a+=a-=a*=a6)c=d-27)数学表达式,用C语言表达式表达正确的是:(1)a/(b+c)*d(2)a/(b+c)*1/d(3)a/(c+b)/d(4)a/d/(b+c)a(b+c).d现在学习的是第4
31、0页,共64页3.4.1 3.4.1 关系运算符与关系表达式关系运算符与关系表达式1 1 关系运算符关系运算符优先级相同(高)优先级相同(低)同级左结合同级左结合3.4 关系运算符和关系表达式 小于 大于=大于等于=等于!=不等于2关系表达式 格式:表达式1 关系运算符 表达式2 例:34 5=4 xx+1关系表达式的关系表达式的值值:“真真”条件满足,用条件满足,用1 1表示表示 “假假”条件不满足,用条件不满足,用0 0表示表示现在学习的是第41页,共64页例:若a=3,b=2,c=1 ab (ab)=c b+cb f=abc cd值“真”1“真”1“假”0d=1f=0“假”0(高高)(低
32、低)优先次序:算术运算符 关系运算符赋值运算符例:ca+b c(a+b)ab!=c (ab)!=ca=bc a=(bc a=(bc)如何表示:0=xb)&(xy)|逻辑或:双目运算符双目运算符双目运算符双目运算符 例:(ab)|(xy)!逻辑非:一目运算符一目运算符一目运算符一目运算符 例:!(ab)逻辑运算“真值表”aba&ba|b!a!b真1真1真1真1假0假0真1假0假0真1假0真1假0真1假0真1真1假0假0假0假0假0真1真1a和b可以是一个变量、常量或运算表达式现在学习的是第43页,共64页运算符种类运算符种类 优先次序优先次序 !非算术运算符关系运算符&|赋值运算符高低11111
33、0(ab)&(xy)ab&xy(y|b)&(y|b)y|b&y|b!a|ab a=10&b&x+a=10|b|x+a|y&+x例:int a=3,b=1,x=2,y=0;逻辑表达式 值说明:说明:说明:说明:(1)(1)逻辑运算结果:逻辑运算结果:只能为只能为“真真”(1)(1)或或“假假”(0)(0),不可能是其它不可能是其它数值数值11现在学习的是第44页,共64页(2)逻辑表达式中的运算对象运算对象(操作数操作数)可以是0(0(“假假”)或或任何非零的数值任何非零的数值(“真真”)111301自左至右扫描自左至右扫描例:5 3&2|8b)&(n=cd)000mn现在学习的是第45页,共6
34、4页例:int a=2,b=3,c=0,d=4;a+&b+;c+&d+;1 a=3 b=40 c=1 d=4例:int a=2,b=3,c=0,d=4;a+|b+;c+|d+;1 a=3 b=31 c=1 d=5现在学习的是第46页,共64页(4)逻辑表达式的应用例1:判别某一年year是否闰年。能被4整除,但不能被100整除:或或 能被能被400400整除:整除:闰年条件:例2:写出判断变量C的值是否为的 条件表达式 小写字母 数字字符 被3除余2且被5除余1 奇数 偶数c=a&c=0&c=-1&x=-1&y=1(0,1)(1,0)(-1,0)(0,-1)答案:x-4答案:x4例4、把下面的
35、数学表达式转化成C语言表达式|x|4 0=x=0&xb)?a :b(ab)?a+b:a-b现在学习的是第49页,共64页4、结合方向:自右至左ab?a:cd?c:d 等同于 ab?a:(cd?c:d)若a=1,b=2,c=3,d=4,有:4 4例:求一个数的绝对值:例:将小写字母转换成大写:x=x=0?x:x=x=0?x:x;x;c=(c=c=(c=a a&c=&c=z z)?c-32:)?c-32:c;c;现在学习的是第50页,共64页3.5 3.5 位位 运运 算算应用:许多计算机硬件设备的状态信息通常是用二进制串表示的,则对硬件设备进行操作,也要送出一个二进制位串的方式 发出的命令。3.
36、5.1 3.5.1 位运算符位运算符 一个二进制位只能取值为0或者1;位运算的运算对象只能是整型(int)或字符型(char)的整数;位运算是对运算量的每一个二进制位分别进行操作的;操作符和优先级:优先级相同同级左结合同级左结合 按位求反按位求反 按位右移按位右移&按位与按位与 按位异或按位异或|按位或按位或高低现在学习的是第51页,共64页3.5.2 3.5.2 3.5.2 3.5.2 按位逻辑运算按位逻辑运算按位逻辑运算按位逻辑运算1 1按位与按位与&(1)格式:x&y (2)规则:对应位均为1时才为1,否则为0:3&9=1。例:c=a&b a:1010 10011010 1001 010
37、10101 0111&b:0000 00000000 0000 11111111 1011 c:0000 00000000 0000 01010101 0011 (3)用途:将指定位&0,实现清实现清0 0以屏蔽原先的数据以屏蔽原先的数据;(例311)将指定位&1,保留原数据对应位保留原数据对应位(例312)2 2按位或按位或|(1)格式:x|y (2)规则:对应位均为0时才为0,否则为1:3|9=11。例:c=a|b a:1010 10011010 1001 0101 0111|b:1111 11111111 1111 1111 1011 c:1111 11111111 1111 1111
38、1111 (3)用途:将指定位|1|1,实现置实现置1 1;(例313)现在学习的是第52页,共64页3 3按位异或按位异或 (1)格式:xy(2)规则:对应位相同时为0不同时为1:00=0,01=1,10=1,11=1 例:c=ab a:1010 1001 01010101 0111 b:0110 0000 11111111 1011 c:1100 1001 10101010 1100(3)用途:将指定位1,实现使特定位翻转其余位不变实现使特定位翻转其余位不变;(例314)4 4按位取反按位取反 (1)格式:x(2)规则:各位翻转,即原来为1的位变成0,原来为0的位变成1;例:c=a a:0
39、000 0000 0000 0111 7 c:1111 1111 1111 1000 -8的补码特点:按位求反整数求负1注意:对 c=-a 有 对 c=!a 有 c=-7 c=-7 c=0 c=0现在学习的是第53页,共64页3.5.3 3.5.3 移位运算移位运算1.1.按位左移按位左移 (1)格式:x 位数(2)规则:使操作数的各位左移,低位补0,高位溢出:例:5(1)格式:x位数(2)规则:使操作数的各位右移,移出的低位舍弃;高位:1)对无符号数和有符号中的正数,补0;2)有符号数中的负数,补1。例:52=1 即:0000010100000101 右移2位:000000000101000
40、00101 例:-52=-2 即:1111101111111011 右移2位:11111111101011111010结果为结果为1 1结果为结果为-2-2现在学习的是第54页,共64页3.5.4 3.5.4 位运算赋值运算符位运算赋值运算符除按位取反运算外,其余5个位运算符均可与赋值运算符一起,构成复合赋值运算符:&=、|+、=、=如:x&=y 相当于:x=x&y x=2 x=x=3 x=x3 x=5 x=x5现在学习的是第55页,共64页例1 a=3*5,a*4 a=3*5,a*4,a+5例2 x=(a=3,6*3)y=(x=123,x+x,x+=100-x)例3 a=1;b=2;c=3;
41、printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,b,c),b,c);/a=15,表达式值60/a=15,表达式值20/赋值表达式,表达式值18,x=18/表达式值100,y=100/1,2,3/3,2,33.6.1逗号运算符和表达式l形式:表达式1,表达式2,表达式nl计算:先求解表达式1,再求解表达式2,l结合性:从左向右l优先级:15l逗号表达式的值:等于表达式n的值l用途:常用于循环for语句中3.6 其他运算现在学习的是第56页,共64页 3.6.5 3.6.5 强制类型转换运算符强制类型转换运算符(type)(type)表达式用括号括起来表
42、达式用括号括起来类型转换方式:自动转换:2+3.5+a 强制转换:其作用是进行数据类型的强制转换。(type)是单目算符。强制转换形式:(类型名)(类型名)(表达式表达式)注意:若为若为表达式,应该用括号括起来表达式,应该用括号括起来例:(double)a (int)(x+y)(float)(5%3)现在学习的是第57页,共64页 类型转换时得到一个所需类型的类型转换时得到一个所需类型的中间变量中间变量中间变量中间变量,原来变量的类,原来变量的类型并未发生变化型并未发生变化main()float x;int i;x=3.6;i=(int)x(int)x;printf(“x=%f,i=%d”,x
43、,i);运行结果:x=3.600000 x=3.600000,i=3强制类型转换强制类型转换保持原保持原floatfloat型型转换后的转换后的intint型型X=3.6i=3取整取整i现在学习的是第58页,共64页 3.6.6 sizeof 3.6.6 sizeof运算符运算符 一般应用形式:sizeofsizeof(opropr)opr可以是表达式或数据类型名称表达式或数据类型名称 其运算的意义是:求出其运算的意义是:求出opropr在计算机的内存中所占用的字节在计算机的内存中所占用的字节数量数量例:inta,b,c=3;floatx,y=4.8;x=y*c;sizeof(a)结果为 2
44、sizeof(int)结果为 2 sizeof(char)结果为 1 sizeof(x)结果为 4 sizeof(y*c)结果为 8 现在学习的是第59页,共64页3.7 各类数值型数据间的混合运算1、整型、实型、字符型数据间可以混合运算 10+a+1.5-8765.1234*b 运算时,不同类型数据要先转换成同一类型,然后运算2、转换规则:由低向高转换(但不必逐级进行)高Double float long unsigned低 int char,short必须转必须转现在学习的是第60页,共64页10+10+a a +e *f-a/d +e *f-a/d上述类型转换由系统自动完成上述类型转换由
45、系统自动完成97107107.00000doubledoubledoubledoubleint a;float f;double d;long e;现在学习的是第61页,共64页3.8 3.8 应用示例应用示例 1 3 2 2 1 3 3 2 1 3 3 3 1 3 2 2 1 3 3 2 1 3 3 3例3_16:已知 x=y=z=2;求值表达式 表达式值 x y z+x|+y&+z+x&+y|+z+x&+y&+zx+|y+&z+x+&y+|z+x+&y+&z+现在学习的是第62页,共64页x=6,y=5,z=3a=5,x=6,y=6 z=10,x=6,y=7a=0 例3_18:已知 int
46、 x=1,y=2,z=3,a;求值x+=y+=z;a=xy?x+:y+;z+=x=y&y=x)?1:0;a=8,x=125 b=1,y=1例3_19:已知 int a=5,b=4,x,y;求值x=a+*a+*a+;y=-b*-b*-b;x=0 x0088 x=0 x00ee x=0 x0066例3_17:已知 int a=0252,b=0 xcc;求x值x=a&b;x=a|b;x=ab;a:a:0000000010101010b:b:0000000011001100a=ab,b=ba,a=aba=b=现在学习的是第63页,共64页小 结l l基本数据类型基本数据类型:整型、实型、字符型 掌握:形式(类型,常量,变量,运算符,显示形式)l各类数值型数据间混合运算l运算符4类型强制转换运算符4赋值运算符4+,运算符4复合赋值运算符4关系运算符4逻辑运算符4逗号运算符和逗号表达式作业:1.第一和第二大题做在书上,下一节课对答案2.第三大题的1、2现在学习的是第64页,共64页