C04第2章数字化信息编码与C语言数据类型.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C04第2章数字化信息编码与C语言数据类型.ppt》由会员分享,可在线阅读,更多相关《C04第2章数字化信息编码与C语言数据类型.ppt(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、新编C语言程序设计教程 清华大学出版社周二强 软件学院 计算机科学与工程系配套视频:配套视频: 博客:博客:数字化信息编码与 C语言的数据类型u2.3 2.3 整型整型2.3.1 整型的分类2.3.2 整型字面量2.3.3 整型的输入输出u2.4 2.4 浮点型浮点型2.4.1 浮点型的取值范围和精度 2.4.2 浮点型的分类2.4.3 浮点型字面量和浮点型数据的输入输出u2.5 2.5 字符型字符型2.5.1 字符型数据的编码2.5.2 字符型字面量2.5.3 字符型数据的输入和输出2.3.1 整型的分类 整型的基本整型的基本类类型符型符为为intint。整型的整型的编码长编码长度通常是一个
2、机器字。在早期的度通常是一个机器字。在早期的1616位机器如位机器如IBM PcIBM Pc机机上,整型(上,整型(intint)用)用2 2个字个字节编码节编码,取,取值值范范围为围为-2-215152 21515-1-1即即-32768-327683276732767;而在;而在3232位机器上,整型(位机器上,整型(intint)用)用4 4个字个字节编码节编码,取,取值值范范围为围为-2 231312 23131-1,-1,即即-2147483648-214748364821474836472147483647。编码长度相对比较固定的整型short int short int 类型(短
3、整型),可简写为类型(短整型),可简写为short,short,编码长度为编码长度为2 2个字节个字节,取值范围取值范围-32768-327683276732767。long int long int 类型(长整型),可简写为类型(长整型),可简写为 long long,编码长度为,编码长度为4 4个字节,个字节,取值范围取值范围-2147483648-214748364821474836472147483647。严格地说,整型只有两类严格地说,整型只有两类short int short int 和和long intlong int,intint与系统相关,与系统相关,但仅相当于其中的一个。但
4、仅相当于其中的一个。VC6.0VC6.0中,中,intint的编码长度是的编码长度是4 4个字节,与个字节,与long intlong int等价。等价。“无符号”整型修饰符修饰符unsignedunsigned加在整型前面就变成了加在整型前面就变成了“无符号无符号”整型。整型。所谓所谓“无符号无符号”整型,就是编码中取消了符号位,全部为数值位,因此整型,就是编码中取消了符号位,全部为数值位,因此“无符号无符号”整型虽然不能编码负数,但是,它可以编码的正数的范围扩大了整型虽然不能编码负数,但是,它可以编码的正数的范围扩大了一倍。一倍。无符号整型有哪些呢?无符号整型有哪些呢?“无符号”整型uns
5、ignedunsigned short short int int(无无符符号号短短整整型型),简简写写为为unsinged unsinged shortshort,编编码长码长度度2 2个字个字节节不不变变,取,取值值范范围围0 02 21616-1-1(6553565535)。)。unsigned unsigned long long int(int(无无符符号号长长整整型型),简简写写为为unsinged unsinged longlong,编编码码长长度度4 4个字个字节节不不变变,取,取值值范范围围0 02 23232-1-1(42949672954294967295)。)。unsi
6、gned int(unsigned int(无符号整型无符号整型),等价于上面两个中的一个。,等价于上面两个中的一个。如何选择变量的类型?数据的运算结果超出取值范围时就会因溢出而出错数据的运算结果超出取值范围时就会因溢出而出错长整型的变量存储取值范围很小的数据又会造成内存空间的浪费长整型的变量存储取值范围很小的数据又会造成内存空间的浪费return 2.3.2 整型字面量 所谓字面量是指在编码的时候就已经确定的量。一个整数如所谓字面量是指在编码的时候就已经确定的量。一个整数如2323就是就是一个整型字面量。一个整型字面量。整型字面量默认也是有类型的整型字面量默认也是有类型的 如果整型字面量的值
7、在如果整型字面量的值在-32768-327683276732767范围内,则认为其是范围内,则认为其是shortshort型型的;如果整型字面量的值超过了上述范围,而在的;如果整型字面量的值超过了上述范围,而在-214783648-21478364821474836472147483647范围内,则认为其是范围内,则认为其是longlong型的。型的。整数字面量的后缀字面量加上后缀字面量加上后缀l l或或L L后被认为是长整型。,如后被认为是长整型。,如2323默认为是默认为是shortshort型的,型的,占两个字节,而占两个字节,而23L23L则是则是longlong型的,占型的,占4 4
8、个字节。个字节。整型字面量可以加上后缀整型字面量可以加上后缀u u或或U U,表示它的类型为,表示它的类型为unsinged intunsinged int(无(无符号整型)。整型字面量还可以加上符号整型)。整型字面量还可以加上u u和和l l两后缀(次序、大小写不限)两后缀(次序、大小写不限),表示该字面量为无符号长整型。,表示该字面量为无符号长整型。整数字面量的注意事项一,整型字面量究竟是何类型通常与编译系统相关,如字面量一,整型字面量究竟是何类型通常与编译系统相关,如字面量-1-1在在TCTC中中通常认为是通常认为是shortshort型,而在型,而在VCVC中通常认为是中通常认为是lo
9、nglong型的。型的。二,如果有初始化语句二,如果有初始化语句unsinged short i=-1u;unsinged short i=-1u;,则则-1-1会先转换成会先转换成1111 1111 1111 11111111 1111 1111 1111的补码形式,然后的补码形式,然后-1-1的补码形式的补码形式会存储到变量会存储到变量i i标示的存储空间,即标示的存储空间,即i i的值是的值是6553565535。这条语句也可写作。这条语句也可写作unsinged short i=-1;unsinged short i=-1;。语句语句short i=-1u;short i=-1u;和语
10、句和语句short i=65535;short i=65535;均应这样理解。均应这样理解。整数字面量的注意事项三,在类型转换和表达式求值时,要特别注意字面量的类型,如:三,在类型转换和表达式求值时,要特别注意字面量的类型,如:-1u-231u-23的结果的结果-1u-1u是是shortshort型无符号数时其值为型无符号数时其值为65535,65535,因此因此-1u-23-1u-23结果为结果为6551265512,大于大于0 0,而,而-1-23-1-23的结果为的结果为-24-24小于小于0 0。整型字面量的进制在在C C语言中,使用前缀来标明一个整型字面量的进制。语言中,使用前缀来标
11、明一个整型字面量的进制。前缀为前缀为“0”“0”的整数是八进制数如的整数是八进制数如027027为十进制的为十进制的2323;前缀为前缀为“0 x”“0 x”或或“0X”“0X”的整数是十六进制数如的整数是十六进制数如0 x170 x17为十进制的为十进制的23 23。十进制整数的前缀为空,即无前缀。十进制整数的前缀为空,即无前缀。如:语句如:语句int i=027,j=0 x17,k=0X17;int i=027,j=0 x17,k=0X17;定义了三个变量定义了三个变量i i、j j、k k,而且它们的值都被初始化为而且它们的值都被初始化为2323了。了。return2.3.3 整型的输入
12、输出 利用格式符串利用格式符串%d%d可以输出整型变量的值,也可把数据赋值给整可以输出整型变量的值,也可把数据赋值给整型变量。型变量。利用格式字符利用格式字符d d使用语句使用语句scanf(scanf(%d%d ,&a);,&a);把类似把类似031031这样的八这样的八进制字面量正确赋值给变量进制字面量正确赋值给变量a a可以吗?可以吗?行不通!格式字符行不通!格式字符d d只能用来输入或输出有符号的十进制整数只能用来输入或输出有符号的十进制整数与整型相关的常用格式字符还有与整型相关的常用格式字符还有i i、u u、o o、x x、X X。整型的格式字符前面可以加一个附加格式说明符整型的格
13、式字符前面可以加一个附加格式说明符l l或或h h。l l用于用于长整型输入或输出;长整型输入或输出;h h用于短整型的输入或输出。一般地,用于短整型的输入或输出。一般地,intint型型用用d d,shortshort型用型用hdhd,longlong型用型用ldld。与整型相关的常用格式字符格式字符格式字符i i与格式字符与格式字符d d的作用相同。的作用相同。格式字符格式字符u u以无符号数编码格式来输入或输出十进制整数。注意:在利用格以无符号数编码格式来输入或输出十进制整数。注意:在利用格式符串式符串%u%u输入数据遇到负数时,仅仅把负数的补码存储到相关内存单元。输入数据遇到负数时,仅
14、仅把负数的补码存储到相关内存单元。如:如:unsigned short i;scanf(unsigned short i;scanf(%hu%hu,&i);,&i);输入输入-1-1回车,则变量回车,则变量i i的状态的状态为为1616个个1,-11,-1的补码!与语句的补码!与语句unsinged short i=-1;unsinged short i=-1;处理方式类似。处理方式类似。函数printf的输出利用格式符串利用格式符串%u%u输出时,相关数据会以无符号数编码格式输出,如输出时,相关数据会以无符号数编码格式输出,如unsigned short i=-1;unsigned shor
15、t i=-1;printf(printf(%hu,%hu%hu,%hu,-1,i);,-1,i);语句的输出为语句的输出为65535,6553565535,65535。注意:注意:函数函数printfprintf在输出数据时,只根据其格式字符串解释相关内存在输出数据时,只根据其格式字符串解释相关内存单元的编码格式!单元的编码格式!如:如:unsigned long l=-1;printf(unsigned long l=-1;printf(%d,%hu%d,%hu,l,l);,l,l);则输出为:则输出为:格式字符o格式字符格式字符o o以无符号数编码格式八进制整数形式输入或输出数据。格式以无
16、符号数编码格式八进制整数形式输入或输出数据。格式字符字符o o把用户输入的数据看作八进制整数,因此可以简单地理解为它先把把用户输入的数据看作八进制整数,因此可以简单地理解为它先把输入数据转换为十进制整数,然后再按无符号数编码格式处理。计算机输入数据转换为十进制整数,然后再按无符号数编码格式处理。计算机中只存储整型数据的二进制补码形式。中只存储整型数据的二进制补码形式。对于语句对于语句scanf(scanf(%ho%ho%ho%ho,&i,&j);,&i,&j);,当输入,当输入23-2323-23时,时,等价于有语句等价于有语句scanf(scanf(%hu%hu%hu%hu,&i,&j);,
17、&i,&j);时输入时输入19-1919-19。printf(printf(%h%ho o,%h,%ho o,-1,23);,-1,23);语句的输出为语句的输出为177777,27177777,27。格式字符x和X格式字符格式字符x x和和X X以无符号数编码格式十六进制整数形式输入或输出数据,以无符号数编码格式十六进制整数形式输入或输出数据,x x和和X X的区别在于输出时整数中的字母(的区别在于输出时整数中的字母(a af f)是小写()是小写(x x时)还是大写时)还是大写(X X时)。时)。对于语句对于语句scanf(scanf(%hx%hx%hx%hx,&i,&j);,&i,&j)
18、;,当输入,当输入23-2323-23时,等价于有语时,等价于有语句句scanf(scanf(%hu%hu%hu%hu,&i,&j);,&i,&j);时输入时输入35-3535-35。printf(printf(%lx,%hX%lx,%hX,-1L,27);,-1L,27);语句的输出为语句的输出为ffffffff,1Bffffffff,1B。例2-8 整型数据的输入和输出程序分析scanf(%hd%ho%hx,&i,&j,&k);scanf(%hd%ho%hx,&i,&j,&k);23 23 2323 23 23(回车)(回车)三个三个2323分别被理解为十进制的、八进制的和十六进制的分别被
19、理解为十进制的、八进制的和十六进制的23,23,变量变量i i、j j和和k k的值分别为十进制的的值分别为十进制的2323、1919和和3535,它们所标示的存储空间中分别存放着,它们所标示的存储空间中分别存放着十进制的十进制的2323、1919和和3535的补码:的补码:0000 0000 0001 01110000 0000 0001 0111、0000 0000 0001 0000 0000 0001 00110011和和0000 0000 0010 00110000 0000 0010 0011。printf(i=%hd,j=%hd,k=%hdn,i,j,k);printf(i=%h
20、d,j=%hd,k=%hdn,i,j,k);printf(i=%hu,j=%ho,k=%hxn,i,j,k);printf(i=%hu,j=%ho,k=%hxn,i,j,k);例2-8 整型数据的输入和输出程序分析scanf(%hd%ho%hx,&i,&j,&k);scanf(%hd%ho%hx,&i,&j,&k);-23-23-23-23-23-23(回车)(回车)因此三个因此三个-23-23分别被理解为十进制的分别被理解为十进制的-23-23、八进制的无符号数、八进制的无符号数-23-23和十六进和十六进制的无符号数制的无符号数-23-23。与用负数初始化无符号变量的处理方式类似,此时只是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C04 数字化 信息 编码 语言 数据类型
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内