第2章1数据类型、运算符

上传人:博****1 文档编号:584243152 上传时间:2024-08-30 格式:PPT 页数:64 大小:685.52KB
返回 下载 相关 举报
第2章1数据类型、运算符_第1页
第1页 / 共64页
第2章1数据类型、运算符_第2页
第2页 / 共64页
第2章1数据类型、运算符_第3页
第3页 / 共64页
第2章1数据类型、运算符_第4页
第4页 / 共64页
第2章1数据类型、运算符_第5页
第5页 / 共64页
点击查看更多>>
资源描述

《第2章1数据类型、运算符》由会员分享,可在线阅读,更多相关《第2章1数据类型、运算符(64页珍藏版)》请在金锄头文库上搜索。

1、第三章数据类型、运算符与表达式Types, operatorsand Expressions31 数据与数据类型 整型整型int (integer的缩写)的缩写) 字符型字符型 char (character的缩写)的缩写) 单精度型单精度型 float 基本类型基本类型 实型实型(浮点型)(浮点型) 双精度型双精度型 double 数组类数组类数据类型数据类型 构造类构造类 结构体结构体 struct 共用体共用体 union 枚举类枚举类 enum 指针类指针类 空类型空类型 void3.2 C语言的基本数据类型及其表示常量区分为不同类型。如 123,456: 整型常量 a,A,b,1,0

2、: 字符常量 123.0, 3.5 : 实型常量 “123”,“A”:字符串常量例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);v符号PI代替常量3.14159 ,称为符号常量v符号常量的定义是在编译预处理语句里进行的,称为宏定义v符号常量一般用大写 v符号常量在其作用域内值不能改变(不能被赋值) PI =35; v符号常

3、量在编译时被常量替换定义格式: #define 标识符 常量3. 变量(1) 变量:其值可以改变的量。 在内存中占据存储单元,在该单元中存放变量的值,必须先定义,后使用。3num90_above*total房间名:变量名(标识符)房间内容:变量值 程序里的一个程序里的一个变量变量可以看成是可以看成是个个存储数据的容器存储数据的容器,它的功能,它的功能就是可以存储数据。就是可以存储数据。变量的定义格式: 类型说明符类型说明符 变量名表;变量名表;定义的变量名称最好和存放数据的意义对应。例:int a,b,c; /*说明a,b,c为整型变量*/char cc; /*说明cc为字符变量*/doubl

4、e x,y; /*说明x,y为双精度实型变量*/#define PRICE 30 main( )int num,total; num=3; total=num*PRICE; printf(“total=%dn”,total); num=4; total=num*PRICE; printf(“total=%dn”,total);90numtotal对变量的基本操作有两个: 1.“赋值”:向变量中存人数据值。 2.“取值”:取得变量当前值、以便在程序运行过程中使用。3 4120*同一个变量一旦重新赋值,原来的值就不再存在。3.2.2 整型数据及其表示1. 整型类型整型数据存储示意图:基本型 属性_

5、占据内存单元数属性2_数据最高位意义intshort 2bytes (短)signed 有符号long 4bytes (长)unsigned 无符号取值范围:数据类型占据字节数二进制位取值范围int2 Bytes16-32768 32767( -215 215-1 )short intsigned intsigned short intunsigned int0 65535(0 216-1)unsigned short intlong int4 Bytes32-2147483648 2147483647( -231 231-1 )signed long intunsigned long int

6、 0 4294967295( 0 232-1 )2. 整型常量十进制:123,-456,0八进制:以0开头(零),01, 012 0123=(123)8=(83)10十六进制:以0x开头,0x123=(123)16=(291)10 0xF=( f )16 = (15)10长整型常量:123L,-456l二进制位(bit):计算机中最小的存储信息单位 字节(Byte):八个二进制位组成的存储单元,是 计算机中最小存取信息单位机器字(word):计算机中存取信息的基本单位,不 同的计算机系统它的长度是不同的补充:数的存放形式补码1. 正数不变2. 负数各位取反后+1,符号位置1 (34)10 10

7、 = (0 0100010)2 (- 34)10 10 = ( 1011101)2 + 1 (1 1011110) 2 4 bytes 数据 x补码 4294967295x+1(- 34)10补码:(4294967295341)10 (4294967262)10 =(ffffffdf)16 =(1111 1111 1111 1111 1111 1111 1101 1110)2 2 bytes 数据 x补码65535x+1 (- 34)10补码:(65535341)10=(65502)10=(ffdf)16 =(1111 1111 1101 1110)2变量的定义格式: 类型说明符 变量名表;4

8、. 整型数据应用中的几个问题一般放在一个函数的开头部分3. 整型变量问题问题1 1:c c没有定义便使用;没有定义便使用;问题问题2 2:c c应为应为 3277032770,但实际,但实际 为为 3276632766,发生溢出;,发生溢出;问题问题3 3:c c应为应为long long intint 类型;类型;long int c;3.2.3 实型数据及其表示1. 实型类型 实型数据是以浮点数形式存储的,在计算机中按指数形式。如图例:0.12345610-22. 实型常量v十进制形式:由数字和小数点组成; 如: 0.123,0.0,-54.0v指数形式:由十进制小数形式指数; 如:123

9、e3,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. 实型变量4. 实型数据应用中的误差问题由于机器存储限制,会使实数产生误差3.2.3 字符型数据及其表示1.字符型数据 字符型数据在计算机中存储的是ASCII码,占用1 byte。(1)字符“A”的存储形式实际上就是一个整型

10、数65;(2)它可以直接与整型数据进行算术运算、混合运算,与整型变量相互赋值,(3)字符型数据以字符或整数两种形式输出。 以字符形式:先将ASCII码值转换为相应的字符,再输出; 以整数形式:直接将ASCII的值作为整数输出。n 换行(LF) t 横向跳格 (HT) b 退格 (BS)v 竖向跳格 f 走纸换页(FF) r 回车(CR) 单引号() 反斜杠字符() ” 双引号(“)0,空(不是0) 101 字符A(八进制) x41 字符A(十六进制)2.字符型常量:用单引号括起来的一个字符: 普通字符:a,A ,1等 ( 大小写不同 ) 转义序列:将反斜杠()后面的字符转变为另外的含义。是一种

11、特殊的字符常量。用的最多用的最多3. 字符型变量:类型名称char:*错误的字符常量表示:,015,n,”A”, ab“How do you do.” “CHINA” “$123.45” “a”4. 4. 字符串常量:字符串常量:一对双引号双引号双引号双引号括起来的字符序列字符序列注意:vC规定:每个字符串结尾加一“字符串结束字符串结束”(00) 系统自动加上的; “CHINA” :v字符串如果需要存放在变量中,需用字符数组来存放(第7章) C H I N A 0字符串结束标志v a与“a”不同aa 05. 字符数据的应用举例main()int i; char c; i=a; c=97; pr

12、intf( “%c,%dn”, c, c) ; printf( “%c,%dn”, i, i) ;输出结果: a , 97 a , 97注意:在一定范围内通用注意:在一定范围内通用注意:在一定范围内通用注意:在一定范围内通用(0-127)(0-127)(0-127)(0-127)3.2.5 指针型数据及其表示v变量与地址的概念程序中: int i=12; float k; 内存中每个字节有一个编号-地址内存编译或函数调用时为其分配内存单元变量是对程序中数据存储空间的抽象变量的地址.20002001200220050000200320043000i122000变量i_pointerk随机指针变量

13、指针型数据:是一个变量在内存中所对应的存储单元的地址值。 如2000,2002等, 指针变量:用来存放另一存储单元的地址值。2.指针变量的定义合法标识符指针的目标变量的数据类型表示定义指针变量不是*运算符例 int *p1,*p2; float *q ; static char *name;注意:1、int *p1, *p2; 与 int *p1, p2;2、指针变量名是p1,p2 ,不是*p1,*p23、指针变量只能指向定义时所规定类型的变量4、指针变量定义后,变量值不确定,应用前必须先赋值格式: 类型说明符 *变量名;3.6.1 &与*运算符含义: *取指针变量所指向单元的内容 &取内存变

14、量的地址 互为逆运算特性:单目运算符 优先级为 2 自右向左结合int i; 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可简单画为:3.2.6 变量的初始化 通常一个变量是先说明,然后再赋值给它。 例:int x,y; x=10;b=20; C规定:可以在定义定义变量的同时使变量初始化

15、初始化,例: 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 说明:变量初始化不是在编译阶段编译阶段完成的而是在程序执行阶段执行阶段执行 本

16、函数时赋以初值的 例:int a=3 ; int a ;a=3 ; 例:int a,b,c=5 ; int a,b,c ; c=5 ; 变量初始化的应用举例main()int a; int b; b=a+2; printf( “%d,%dn”, a,b) ; 注意:定义的变量在没有初始化之前有一个不确注意:定义的变量在没有初始化之前有一个不确注意:定义的变量在没有初始化之前有一个不确注意:定义的变量在没有初始化之前有一个不确 定值。定值。定值。定值。a=3;3.3 算术运算与赋值语句3.3.1 c语言中的运算规则1、运算符 分类分类( (按操作数个数分) ): 单目运算:一个运算符连接一个运算

17、对象; (a ; !a ; +a) 双目运算:一个运算符连接两个运算对象; (2312) 三目运算:一个运算符连接三个运算对象; ab?a=1:a=-1分类分类 (作用作用):算术运算符算术运算符 + - * / %+ - * / %自增自减运算符 + -+ -赋值与赋值组合运算符赋值与赋值组合运算符 = += -= *= /= %= = |= &= = += -= *= /= %= = |= &= =关系运算符 = = !=逻辑运算符 & | !位运算符 | & 条件运算符 ? : 逗号运算符逗号运算符 , , 指针运算符 * &求字节数运算符 size of 强制类型转换运算符强制类型转换

18、运算符 ( (类型类型) )分量运算符 . - 下标运算符 其它 ( )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) 优先级: 同一表达式中不同运算符进行计算时的先后次序 结合性: 针对同一优先级的多个运算符而言,指同一表达式 中相同优先级的多个运算应遵循的运算次序。表达式运算时的关键问题:表达式运算时的关键问题:(1) 算符优先极问题(不同级别算符的计算次序

19、)(2) 算符结合次序(优先级平级时的计算次序)(3) 算符操作数个数(一目或二目算符)(4) 算符对应操作数类型3.3.2 算术运算符和算术表达式1、算术运算符说明:“+”,“-”运算符单目运算:取正、负值运算;优先级高 双目运算:加、减运算;优先级低除法运算“/” 整数(字符)相除结果是整型(商),小数部分全部舍去 实数相除,所得的商也为实数。 例如:1/3=0 只取结果的整数部分0 ,舍去0.333333 15/43 只取结果的整数部分3,舍去0.75 1.0/30.333333 13/4.03.250000 整数相除时,若不能整除将造成误差,要避免整数直接相除。模运算%也称为求余运算。

20、要求两个运算对象都为整型,其结果是整数除法的余数。例如: 5%10=5 10%3=1 -10%3-1 算术运算符的优先级及结合性如下:算术运算符的优先级及结合性如下: 2、算术表达式 c语言的算术表达式由算术运算符、常数、变量、函数和园括号组成,其基本形式与数学上的算术表达式类似。例如: 3十5 12.3423.65*2 -5*(18%4+6) x/(67-(12+y)*a) 带函数调用的算术表达式。以数学函数的调用为例,c语言把数学计算中常用的计算公式(或算法)抽象定义为一个个的函数,这些函数的集合构成了C语言的数学库(见附录c),在程序中用到相应的函数时只要直接调用即可。例如,数学表达式:

21、sin(x)+cos(y/2) c语言算术表达式:sinsin(x)+coscos(y/2) 函数库:(#include ) 例3-6 下列数学表达式:对应的c语言算术表达式为:3.3.3 自增、自减运算符(+、)(1) +i+i和和i+i+ 最后都使i=i+1,但顺序不同,意义不同例:int i=3,j; 对于j=+i+i;相当于 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的值加(

22、减)1开始开始 结果结果3 i i4 j j43 i i4 j j3(3)用于+,-运算的可以是有序类型的变量(4) +,-的结合性是自右向左的。例题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=(+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增值

23、为增值为4 4)例题4:若i=3 则printf(“%d”,i i+ + +i+ + +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+的i自加1。i增值为:5 一般写为: (i+)+(+i)。 3.3.4 赋值运算符和赋值表达式1 1、 赋值运算符 (=) 计算赋值运算符“”右边表达式的值,并将计算

24、结果赋给“”左边的变量。2、赋值表达式:变量变量 = = 表达式表达式 计算赋值运算符右边“表达式”的值, 将计算结果赋值给赋值运算符左边的“变量” , 赋值表达式的值就是赋值运算符左边“变量”的值4、赋值时的类型转换 当赋值运算符两侧类型不一致,赋值时要进行类型转换。其转换工作由c编译自动完成。转换原则是以“”左边的变量类型为准,即将“”右边的值转换为与“”左边的变量类型致(类型转换)。 例 int b=32769; int 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.0000

25、00 c=0 floatint 直接舍去浮点数地小数部分(存储空间缩小存储空间缩小) intfloat 按浮点数相应有效位数补小数点后地有效0(扩大扩大) doublefloat 截取前7位double数据给float变量(缩小缩小) intchar 截取int数据地低8位给char变量 (缩小缩小) 3.3.5组合赋值运算符和组合赋值表达式1、组合赋值运算符 在赋值符(=)之前前加上其它运算符构成组合运算符: 运算符 10种:+ = , -= , *= , /= , %= = , &=, = , |= 2、 组合赋值表达式 格式:变量名 组合赋值运算符 表达式 功能:变量名 = 变量名 运算

26、符 表达 例: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+85 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)a=5 a=b=c=5 a=5+(c=6) a=(b=4)+(c=6)a*=3+5 a+=a-=a*aint a=3,b,c;a=b= d=x=y=a=c= 1

27、)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).d3.4.1 关系运算符与关系表达式1 关系运算符优先级相同(高)优先级相同(低)同级左结合同级左结合3.4 关系运算符和关系表达式 小于 大于= 大于等于= 等于!= 不等于2关系表达式3 格式:表达式1 关系运算符 表达式2 例:34 5=4 xx+1关系表达式的关系表达式的值值:“ “真真” ”条

28、件满足,用条件满足,用1 1表示表示 “ “假假” ”条件不满足,用条件不满足,用0 0表示表示例:若a=3,b=2,c=1 ab (ab)= = c b+cb f=abc cd值“真” 1“真” 1“假” 0d=1f=0“假” 0(高高)(低低) 优先次序:算术运算符 关系运算符关系运算符赋值运算符例:ca+b c(a+b)ab!=c (ab)!=ca=bc a=(bc a=(bc)如何表示:0=xb)&(xy) | 逻辑或:双目运算符双目运算符双目运算符双目运算符 例:(ab)|(xy)! ! 逻辑非 :一目运算符一目运算符一目运算符一目运算符 例:! ! (ab)逻辑运算“真值表”aba

29、&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可以是一个变量、常量或运算表达式运算符种类 优先次序 !非算术运算符关系运算符 & |赋值运算符高低111110(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),不可能是其它不可能是其它数值数值1

30、1(2) 逻辑表达式中的运算对象运算对象( (操作数操作数) )可以是0 (“0 (“假假”) )或任何非零的数值或任何非零的数值(“(“真真”) )111301自左至右扫描自左至右扫描例: 5 3 & 2 | 8b)&(n=cd)000mn例: 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(4) 逻辑表达式的应用例1:判别某一年year是否闰年。 能被4整除,但不能被100整除: 或或 能被能被400400整

31、除:整除:闰年条件:例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、把下面的数学表达式转化成C语言表达式 |x| 4 0= x=0 & xb) ? ? a : : b(ab) ? ? a+b : : a-b4、结合方向:自右至左ab?a:cd?c:d 等同于 ab?a:(cd?c:d)(cd?c:d)若a=1,b=2,c=3,d=4,有:4 4例:求一个数的绝对值:例:将小写字母转换成大写: x=x=0 ? x: x=x

32、=0 ? x:x;x;c= (c=a&c=a&c=z) ? c-32 : c ;32 : c ;3.5 3.5 位位 运运 算算应用:许多计算机硬件设备的状态信息通常是用二进制串表示的, 则对硬件设备进行操作,也要送出一个二进制位串的方式 发出的命令。3.5.1 3.5.1 位运算符位运算符 一个二进制位只能取值为0或者1; 位运算的运算对象只能是整型(int)或字符型(char)的整数; 位运算是对运算量的每一个二进制位分别进行操作的; 操作符和优先级:优先级相同同级左结合同级左结合 按位求反按位求反 按位右移按位右移& & 按位与按位与 按位异或按位异或| | 按位或按位或高低3.5.2

33、3.5.2 按位逻辑运算按位逻辑运算1 1按位与按位与& & (1)格式:x&y (2)规则:对应位均为1时才为1,否则为0:3&9=1。 例:c=a & b a:1010 10011010 1001 01010101 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时才

34、为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 1111 (3)用途:将指定位|1|1,实现置实现置1 1; (例313)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 1010101

35、0 1100(3)用途:将指定位1,实现使特定位翻转其余位不变实现使特定位翻转其余位不变;(例314)4 4按位取反按位取反 (1)格式:x(2)规则:各位翻转,即原来为1的位变成0,原来为0的位变成1; 例:c= a a:0000 0000 0000 0111 7 c:1111 1111 1111 1000 -8的补码特点:按位求反整数求负1注意:对 c= -a 有 对 c= !a 有 c = -7 c = -7 c =0 c =03.5.3 3.5.3 移位运算移位运算1. 1. 按位左移按位左移 (1)格式:x 位数(2)规则:使操作数的各位左移,低位补0,高位溢出: 例: 5(1)格式

36、:x位数(2)规则:使操作数的各位右移,移出的低位舍弃; 高位:1)对无符号数和有符号中的正数,补0; 2)有符号数中的负数,补1。 例: 52=1 即:0000010100000101 右移2位: 00000000010100000101 例: -52=-2 即:1111101111111011 右移2位: 11111111101011111010结果为结果为1 1结果为结果为-2-23.5.4 3.5.4 位运算赋值运算符位运算赋值运算符除按位取反运算外,其余5个位运算符均可与赋值运算符一起,构成复合赋值运算符: &=、|+、=、=如:x &= y 相当于:x = x&y x = 2 x

37、= x= 3 x = x3 x = 5 x = x5例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; 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逗号运算符和表达式v形式:表达式1,表达式2,表达式nv计算:先求解表达式1,再求解表达式2,v结合性:从左向右v优先级: 15

38、v逗号表达式的值:等于表达式n的值v用途:常用于循环for语句中3.6 其他运算 3.6.5 强制类型转换运算符(type)表达式用括号括起来表达式用括号括起来类型转换方式: 自动转换: 2+3.5+a 强制转换:其作用是进行数据类型的强制转换。 (type)是单目算符。 强制转换形式: (类型名)(类型名)(表达式表达式) 注意:若为若为表达式,应该用括号括起来表达式,应该用括号括起来例: (double) a (int)(x+y) (float)(5%3) 类型转换时得到一个所需类型的中间变量中间变量,原来变量的类型并未发生变化main()float x ; int i ; x=3.6;

39、i= =( (intint) x) x ; printf(“x=%f , i=%d”,x ,i ) ;运行结果:x=3.600000x=3.600000, i=3强制类型转换强制类型转换保持原保持原floatfloat型型转换后的转换后的intint型型X=3.6i=3取整取整i 3.6.6 sizeof运算符 一般应用形式: sizeofsizeof(opropr) opr可以是表达式或数据类型名称表达式或数据类型名称 其运算的意义是:求出其运算的意义是:求出opropr在计算机的内存中所占在计算机的内存中所占用的字节数量用的字节数量例:int a,b,c=3; float x,y=4.8;

40、 x=y*c; sizeof(a) 结果为 2 sizeof(int) 结果为 2 sizeof(char) 结果为 1 sizeof(x) 结果为 4 sizeof(y*c) 结果为 8 3.7 各类数值型数据间的混合运算1、整型、实型、字符型数据间可以混合运算 10+a+1.5- 8765.1234*b 运算时,不同类型数据要先转换成同一类型,然后运算2、 转换规则:由低向高转换(但不必逐级进行)高 Double float long unsigned低 int char, short必须转必须转10 + a + e * f - a / d上述类型转换由系统自动完成上述类型转换由系统自动完

41、成97107107.00000doubledoubledoubledoubleint a; float f; double d; long e;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&+zx+|y+&z+x+&y+|z+x+&y+&z+x=6,y=5,z=3a=5,x=6,y=6 z=10,x=6,y=7a=0 例3_18:已知 int x=1,y=2,z=3,a; 求值x += y += z;a = xy ? x+ : y

42、+ ;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=0x0088 x=0x00ee x=0x0066例3_17:已知 int a=0252, b=0xcc; 求x值x=a&b;x=a|b;x=ab;a: a: 0000000010101010b: b: 0000000011001100 a=ab, b=ba, a=ab a= b= 小结l l基本数据类型基本数据类型:整型、实型、字符型 掌握:形式(类型,常量,变量,运算符,显示形式)l各类数值型数据间混合运算l运算符4类型强制转换运算符4赋值运算符4+,运算符4复合赋值运算符4关系运算符4逻辑运算符4逗号运算符和逗号表达式

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号