第03章数据类型精选文档.ppt
《第03章数据类型精选文档.ppt》由会员分享,可在线阅读,更多相关《第03章数据类型精选文档.ppt(96页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第03章数据类型本讲稿第一页,共九十六页l 本章要点本章要点本讲稿第二页,共九十六页l 主要内容主要内容3.0 3.0 计算机中的数计算机中的数3.1 C3.1 C的数据类型的数据类型3.2 3.2 常量与变量常量与变量3.3 3.3 整型数据整型数据3.4 3.4 浮点型数据运行浮点型数据运行3.5 3.5 字符型数据字符型数据 本讲稿第三页,共九十六页l 主要内容主要内容3.3.变量赋初值变量赋初值 3.7 3.7 各类数值型数据间的混合运算各类数值型数据间的混合运算 3.8 3.8 算术运算符和算术表达式算术运算符和算术表达式 3.9 3.9 赋值运算符和赋值表达式赋值运算符和赋值表达式
2、 3.10 3.10 逗号运算符和逗号表达式逗号运算符和逗号表达式 本讲稿第四页,共九十六页3.0 计算机中的数o计算机中的数是以二进制存储的,每一个0或者1叫做1位(Bit)。o计算机处理数的时候,总是以字节为基本单位,所以要表示一个数,最少要20字节,不够的话就21字节、22字节、23字节。而1字节(Byte)=8位,更多字节则用2的幂次表示,如1KB=210B,1MB=220B,1GB=230Bo计算机存储整数和存储浮点数的方法是不同的,由于存储浮点数方法比较复杂,这里不做具体讨论。我们只研究整数。本讲稿第五页,共九十六页整数的三种表示法之一:原码o原码的求法如下:忽略符号,除2取余,逆
3、序排列,最后补符号位。符号位总是最高位,0为正,1为负,其余位叫做数值位。o假定用1字节表示整数,求-44的原码求法如下:44/2=22余0,22/2=11余0,11/2=5余1,5/2=2余1,2/2=1余0,1/2=0余1o于是-44=(10101100)2,顺便得到44=(00101100)2 第二个0是补足8位用的。本讲稿第六页,共九十六页整数的三种表示法之二:反码o反码的求法如下:正数的反码=原码,负数的反码先求原码,然后符号位不变,数值位全部取反。o例如44的原码=(00101100)2 反码o例如已知原码-44=(10101100)2 那么反码-44=(11010011)2本讲稿
4、第七页,共九十六页整数的三种表示法之三:补码o补码求法如下:正数的补码=原码,负数的补码=其绝对值的原码逐位取反+1o例如44的原码=(00101100)2=补码o例如求-44的补码,则要:1.求其绝对值的原码:(00101100)22.逐位取反:(11010011)23.+1:+1所以-44的补码是:(11010100)2o换句话说,负数的补码=反码+1本讲稿第八页,共九十六页已知一个数的补码,如何计算这个数?o如果补码=(00101100)2 那么显然是一个正数,所以这样求即可:1*25+1*23+1*22=44o如果补码=(11010100)2 那么就要:1.取反:(00101011)2
5、 2.+1:1得到:(00101100)2=44,所以是-44o结论:补码和原数的来回转换,都是取反取反+1本讲稿第九页,共九十六页补码的一个有趣的特点o符号扩展n把补码的符号位向左边填充,叫做符号扩展,例如:o结论是:符号扩展不会改变原数的大小符号扩展不会改变原数的大小。(注意以上的二进制数应该是写成一串的,为方便查看才特意换行的,第一列数都是1,第二列数都是-1)原数(1字节)0000000111111111扩展为2字节00000000 0000000111111111 11111111扩展为4字节00000000 00000000 00000000 0000000111111111 11
6、111111 11111111 11111111本讲稿第十页,共九十六页总结一下o三种码的共同点是:最高位都是符号位,0表示正数,1表示负数。同一个正数,用三种码来表示是完全相同的。o计算机使用补码补码存储整数,原码和反码在浮点数的存储中才会被用到。o计算机存储一个整数,可能使用20,21,22,23字节。当一个整数需要增大字节时,补码使用符号扩展来填充高位。本讲稿第十一页,共九十六页三种码的表达能力o从数学角度说,1字节能表示28=256个数。下面的讨论仅针对1字节的情况,其它情况类推。o原码只能表示255个数,因为00000000和10000000都表示零,反码结论与此类似。所以这两个码表
7、示范围是-127127。o补码能够表示256个数,因为只有00000000表示零,10000000则表示-128。零的表示法唯一是补码的一个优点。补码的表示范围是-128127。o有些情况下不需要处理负数,此时可以规定最高位的符号位不再表示符号,而作为数值位,这样补码的表示范围变成0255,这种数叫无符号数。本讲稿第十二页,共九十六页八进制和十六进制o给定一个二进制补码:1011110101101110,你能够很快记住么?估计很难。o八进制和十六进制是为了方便人们读写和记忆而引入的。把一个二进制串写成八进制和十六进制时,最高位都被看成数值位。o八进制使用0-7这八个符号,十六进制使用0-9和A
8、-F十六个符号。A表示10,B表示11F表示15,其中A-F也可以使用小写字母。o上述那个二进制串,相当于(136556)8或者(BD6E)16,可见使用十六进制确实方便得多。本讲稿第十三页,共九十六页八进制和二进制的相互转换o八进制二进制:每一个八进制位,替换成三个的二进制位。反之亦然。o如:(137)8=(1011111)2八进制八进制二进制二进制00001001201030114100510161107111本讲稿第十四页,共九十六页十六进制和二进制的相互转换o十六进制二进制:每一个十六进制位,替换成四个的二进制位。反之亦然。o如:(137)16=(100110111)2十六进制十六进制
9、二进制二进制0000010001200103001140100501016011070111十六进制十六进制二进制二进制8100091001A(a)1010B(b)1011C(c)1100D(d)1101E(e)1110F(f)1111本讲稿第十五页,共九十六页十六进制和十进制的相互转换o十进制十六进制:除16取余。例如求44的十六进制,求法如下:44/16=2余12(就是C),2/16=0余2 于是44=(2C)16o上述做法可以推广到十进制N进制。o十六进制十进制:按权重求和。例如求(ABC)16的十进制,求法如下:10*162+11*161+12*160=2748o上述做法可以推广到N进
10、制十进制。本讲稿第十六页,共九十六页ASCII码o计算机存储任何信息都是用二进制数,所以字符也用二进制存储。ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)码规定了任何一个字符和整数的对应关系,所以只要存储了对应的整数,就相当于存储了字符。oASCII码中:031及127(共33个)是控制字符或通信专用字符(其余为可显示字符);32126(共95个)是字符(32是空格),其中4857为0到9十个阿拉伯数字;6590为26个大写字母,97122号为26个小写字母,其余为一些标点符号、运算符号等。o记住一个结论
11、:ASCII中,所有大写字母是连续编码,所有小写字母是连续编码,所有数字字符是连续编码。本讲稿第十七页,共九十六页 3.1 C的数据类型C语言提供了以下一些数据类型。数据类型数据类型构造类型构造类型指针类型指针类型空类型(空类型(无值类型)无值类型)voidvoid枚举类型枚举类型枚举类型枚举类型 enumenumenumenum数组类型数组类型数组类型数组类型结构类型结构类型结构类型结构类型 structstructstructstruct联合类型联合类型联合类型联合类型 unionunionunionunion基本类型基本类型整型整型整型整型 intintintint字符型字符型字符型字符
12、型 charcharcharchar实型(浮点型)实型(浮点型)实型(浮点型)实型(浮点型)单精度实型单精度实型单精度实型单精度实型 floatfloatfloatfloat双精度实型双精度实型双精度实型双精度实型 double double本讲稿第十八页,共九十六页 3.2 常量与变量3.2.1 常量和符号常量常量和符号常量o在程序运行过程中,其值不能被改变的量称为常量o常量区分为不同的类型:整型 100,125,-100,0实型 3.14,0.125,-3.789字符型 a,b,2字符串 a,ab,1232本讲稿第十九页,共九十六页例3.1 符号常量的使用#define PRICE 30#
13、define PRICE 30#include#include void main()void main()int num,total;int num,total;num=10;num=10;total=num*PRICE;total=num*PRICE;printf(total=%dn,total);printf(total=%dn,total);运行结果:运行结果:total=300total=300说明:说明:说明:说明:程序中用#define命令行定义PRICE代表常量30,此后凡在本文件中出现的PRICE都代表30,可以和常量一样进行运算,但不能被重新赋值,如:PRICE=40;/*
14、/*错误错误!*/!*/本讲稿第二十页,共九十六页3.2.2变量变量o变量代表内存中具有特定属性的一个存储单元,它用来存放数据,这就是变量的值,在程序运行期间,这些值是可以改变的。o变量名实际上是一个以一个名字对应代表一个地址,在对程序编译连接时由编译系统给每一个变量名分配对应的内存地址。从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据。本讲稿第二十一页,共九十六页 3.2 常量与变量 变量命名的规定:语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。例:例:sum,_total,month,Student_name,lotus_1_
15、2_3,BASIC,li_ling M.D.John,¥123,3D64,ab 本讲稿第二十二页,共九十六页注意:注意:o编译系统将大写字母和小写字母认为是两个不同的字符。o建议变量名的长度最好不要超过8个字符(当你有机会使用很古老的系统的时候)。o在选择变量名和其它标识符时,应注意做到“见名知意”,即选有含意的英文单词(或其缩写)作标识符。o要求对所有用到的变量作强制定义,也就是“先定义,后使用”。本讲稿第二十三页,共九十六页 3.3 整型数据3.3.1整型常量的表示方法整型常量的表示方法 整型常量即整常数。在语言中,整常数可用以下三种形式表示:(1)十进制整数。如:如:123,-456,4
16、。(2)八进制整数。以0头的数是八进制无符号数。如:如:0123表示八进制数123,等于十进制数83,-011表示八进制数-11,即十进制数-9。本讲稿第二十四页,共九十六页 3.3 整型数据(3)十六进制整数。以0 x开头的数是16进制无符号数。如:如:0 x123,代表16进制数123,等于十进制数 291。-0 x12等于十进制数18。3.3.2 整型变量整型变量(1)(1)整型数据在内存中的存放形式整型数据在内存中的存放形式 数据在内存中是以二进制形式存放的。如如:int i;/*定义为整型变量*/i=10;/*给i赋以整数10*/本讲稿第二十五页,共九十六页 3.3 整型数据注意:注
17、意:o十进制数10的二进制形式为1010,Turbo C 2.0和Turbo C+3.0为一个整型变量在内存中分配2个字节的存储单元(不同的编译系统为整型数据分配的字节数是不相同的,VC+6.0则分配4个字节)。o数值是以补码(complement)表示的。本讲稿第二十六页,共九十六页 3.3 整型数据(2)(2)整型变量的分类整型变量的分类共六种共六种有符号基本整型有符号短整型有符号长整型无符号基本整型无符号短整型无符号长整型(signed)int(signed)short(int)(signed)long(int)unsigned intunsigned short(int)unsigne
18、d long(int)注意:注意:括号表示其中的内容是可选的.本讲稿第二十七页,共九十六页 3.3 整型数据o整数类型的有关数据:类型类型 类型说明符类型说明符 长度长度 数的范围数的范围 基本型基本型 intint 2 2 2 2或或或或4 4 4 4字节字节字节字节 短整型短整型 short 2short 2字节字节 -2 -215152 21515-1-1 长整型长整型 long long 4 4字节字节 -2 -231312 23131-1-1 无符号整型无符号整型 unsigned unsigned int int 2 2 2 2或或或或4 4 4 4字节字节字节字节 无符号短整型无
19、符号短整型 unsigned short unsigned short 2 2字节字节 0 06553565535 无符号长整型无符号长整型 unsigned long unsigned long 4 4字节字节 0 0(2 23232-1-1)本讲稿第二十八页,共九十六页 3.3 整型数据例如:整数13在内存中实际存放的情况:本讲稿第二十九页,共九十六页 3.3 整型数据(3)(3)整型变量的定义整型变量的定义:规定在程序中所有用到的变量都必须在程序中定义,即“强制类型定义”。例如例如:int a,bint a,b(指定变量、为整型)unsigned short c,d;unsigned s
20、hort c,d;(指定变量、为无符号短整型)long e,f;long e,f;(指定变量、为长整型)本讲稿第三十页,共九十六页例3.2 整型变量的定义与使用#include#include void main()()int a,b,c,d;/*指定指定,为整型变量为整型变量*unsigned;/*指定为无符号整型变量指定为无符号整型变量*12;-24;10;printf(a+u=%d,b+u=%dn,d);说明:说明:说明:说明:可以看到不同种类的整型数据可以进行算术运算 运行结果:运行结果:,本讲稿第三十一页,共九十六页例3.3 整型数据的溢出#include#include void
21、main()void main()short int a,b;short int a,b;a=32767;a=32767;b=a+1;b=a+1;printf(“%d,%dn”,a,b);printf(“%d,%dn”,a,b);说明:说明:说明:说明:数值是以补码表示的。一个整型变量只能容纳-3276832767范围内的数,无法表示大于32767或小于-32768的数。遇此情况就发生“溢出”。运行结果:运行结果:32767,-3276832767,-32768本讲稿第三十二页,共九十六页 3.3 整型数据3.3.3 整型常量的类型整型常量的类型(1)一个整数,如果其值在-32768+3276
22、7范围内,认为它是int型,它可以赋值给int型和long int型变量。(2)一个整数,如果其值超过了上述范围,而在-2147483637+2147483647范围内,则认为它是长整型。可以将它赋值给一个long int型变量。本讲稿第三十三页,共九十六页 3.3 整型数据(3)如果所用的C版本(如Turbo C)分配给short int与int型数据在内存中占据的长度相同,则它的表数范围与int型相同。因此一个int型的常量同时也是一个short int型常量,可以赋给int型或short int型变量。本讲稿第三十四页,共九十六页 3.3 整型数据(4)一个整常量后面加一个字母u或U,认
23、为是unsigned int型,如12345u,在内存中按unsigned int规定的方式存放(存储单元中最高位不作为符号位,而用来存储数据)。如果写成-12345u,则先将-12345转换成其补码53191,然后按无符号数存储。本讲稿第三十五页,共九十六页 3.3 整型数据(5)在一个整常量后面加一个字母l或L,则认为是long int型常量。例如:123l,432L,0L 用于函数调用中。o如果函数的形参为long int型,则要求实参也为long int型。本讲稿第三十六页,共九十六页 3.4 浮点型数据3.4.13.4.1浮点型常量的表示方法浮点型常量的表示方法两种表两种表示形式示形
24、式小数小数指数指数0.1230.1233 3e-3e-3注意注意:字母e(或E)之前必须有数字,且e后面的指数必须为整数。如果是纯小数,则整数部分的0可以省略。如0.123可以写成.123。1e31e3、1.8e-31.8e-3、-123e-6-123e-6、-.1e-3-.1e-3e3e3、2.1e3.52.1e3.5、.e3.e3、e e 本讲稿第三十七页,共九十六页 3.4 浮点型数据规范化的指数形式:规范化的指数形式:在字母e(或E)之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字.例如例如:123.456可以表示为:123.456e0,12.3456e1,1.23456
25、e2,0.123456e3,0.0123456e4,0.00123456e 其中的1.23456e31.23456e3称为“规范化的指数形式”。本讲稿第三十八页,共九十六页 3.4 浮点型数据3.4.2 浮点型变量浮点型变量(1)(1)浮点型数据在内存中的存放形式浮点型数据在内存中的存放形式 一个浮点型数据一般在内存中占4个字节(32位)。与整型数据的存储方式不同,浮点型数据是按照指数形式存储的。系统把一个浮点型数据分成小数部分和指数部分,分别存放。指数部分采用规范化的指数形式。本讲稿第三十九页,共九十六页类型 位数 数的范围 有效数字float 32 10-37 1038 67 位doubl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 03 数据类型 精选 文档
限制150内