整型、字符型与浮点

上传人:tian****1990 文档编号:71596902 上传时间:2019-01-21 格式:PPT 页数:52 大小:277.50KB
返回 下载 相关 举报
整型、字符型与浮点_第1页
第1页 / 共52页
整型、字符型与浮点_第2页
第2页 / 共52页
整型、字符型与浮点_第3页
第3页 / 共52页
整型、字符型与浮点_第4页
第4页 / 共52页
整型、字符型与浮点_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《整型、字符型与浮点》由会员分享,可在线阅读,更多相关《整型、字符型与浮点(52页珍藏版)》请在金锄头文库上搜索。

1、第4章 整型、字符型与浮点型,本章将重点介绍C语言提供的三组基本数据类型的使用,包括:整型、字符型和浮点型。C语言中的其他高级数据类型实质上都可以视为这些基本数据类型的组合。通过本章的学习,要掌握以下知识:,第4章 整型、字符型与浮点型,各种整型数据类型的使用; 各种字符型数据类型的使用; 各种浮点型数据类型的使用; 使用printf函数和scanf函数处理各种类型数据; 使用typedef自定义数据类型; const和volatile的使用。,4.1 整型数据类型,C语言定义了4种整型数据类型以表示不同大小的整数数值。 short int,短整型 int,整型 long int,长整型 lo

2、ng long int,长长整型,4.1.1 字节长度,在不同的编译器和不同的硬件环境中,不同整型的字节长度可能不同。但是都具有以下关系,short int的长度不大于int的长度,int的长度不大于long int的长度,long int的长度不大于long long int的长度。范例4-1可以得到各种整数数据类型的字节长度。,4.1.2 修饰符signed和unsigned,signed和unsigned称为符号修饰符,可以用来作为上面四种整型数据类型的前缀,以组成有符号整数和无符号整数,如下所示: signed short int, unsigned short int, signed

3、 int, unsigned int, signed long int, unsigned long int, signed long long int, unsigned long long int 带signed前缀的数据类型和无符号修饰符的整型一样,都可以表示所有整数;而有unsigned修饰的数据类型都只能用来表示无符号数,即非负整数。,4.1.3 整型常量,整型常量是指用以表示整型数值的常量,可以分为短整型(short int)、整型(int)、长整型(long int)和长长整型(long long int)四种。表4-1是数值为74的不同进制的整型常量的表示形式。,4.1.3 整

4、型常量,与作为数据类型后缀不同的是,在printf函数和scanf函数中,当长度修饰符和符号修饰符都存在时,位置不能互换。 符号修饰符与进制符不能共存。 进制符有5种:d、x、X、o和i。d表示十进制,x和X表示十六进制,o表示八进制,i表示三种进制中任意一种。,4.1.3 整型常量,其中十六进制符(x和X)中,进制符x只能接受09和小写字母af,进制符X只能接受09和大写字母AF。 例如,把长长整型十六进制数FFFFFFFFFF以八进制形式输出,如下所示: printf(“%llon“, 0xFFFFFFFFFFll); 输出结果为: 17777777777777,4.1.4 整型变量,整形

5、变量是指用以存储整型数值的变量。与整型常量一样,整型变量也可以分为短整型、整型、长整型和长长整型四种类型;并且每种类型都可以分为有符号和无符号两种,而有符号数与没有符号前缀的变量完全一样。各类型的定义形式如下: signed short int data_h; unsigned short int data_uh; signed int data_d; unsigned int data_ud; signed long int data_l; unsigned long int data_ul; signed long long int data_ll; unsigned long long

6、int data_ull;,4.1.5 整型的存储方式,整型按照存储方式和数值区间的不同,可分为两大类:有符号整型和无符号整型。其中,有符号整型在内存中的存储分为两部分:符号部分和数值部分。例如,int型在内存中的存储形式如下图所示。,4.1.5 整型的存储方式,例如,unsigned int型在内存中的存储形式如下图所示。,4.1.6 整型的数值范围,在前面的讨论中,可以知道不同整型数据的字节长度不同,因此它们的可表示的数值范围也是不同的,如下表所示。,4.1.6 整型的数值范围,所有变量在内存中的存储状况如下表所示。,4.1.6 整型的数值范围,程序中4个变量均赋值为其数据类型所能表示范围

7、的边界值,存储状态如下表所示。当再增加或减小这些变量的值时,数据将溢出。,4.1.6 整型的数值范围,【代码解析】同样,本程序中4个变量也都被赋值为其数据类型所能表示范围的边界值,存储状态如下表所示。同样,当增加或减小这些变量的值时,数据将溢出。,4.2 字符型数据类型,C语言中的字符型数据只有一种,即char型数据类型,因此也直接把char型称为字符型。使用符号修饰符还可以得到无符号字符型和有符号字符型,如下所示: signed char,有符号字符型 unsigned char,无符号字符型 本节将先讨论字符型的字节长度,再讨论了字符常量和字符变量的使用,最后介绍了字符型的存储方式。,4.

8、2.1 字节长度,在C标准中,char型的字节长度被定义为1位。与整型数据类型一样,也可以使用符号修饰符来得到无符号char型和显式的有符号char型,它们的字节长度都是一样的。,4.2.2 字符常量,字符常量,即用以表示字符的常量。C语言中的字符常量都包含在单引号中,单引号内具体的内容可分为两种: 1单个字符 单个字符常量是指单引号内只含一个字符的常量,例如: a, b, 1, m 这些字符常量输出到屏幕上的结果即为引号内的字符本身。 2转义字符 以反斜杆()开头的转义字符,其作用是把反斜杆后面的字符转换为特定形式。比如: n, t, 123, x12,4.2.2 字符常量,下表列出了常用的

9、转义字符的含义。,4.2.2 字符常量,由于字符常量只占1个字节,因此该类型只能表示256个值。正因为字符型可表示的数值个数有限的特点,在C标准中,字符常量的0127部分被一一映射为ASCII码。,4.2.3 字符变量,字符变量是用以存储字符型数值的变量。字符型变量也有两种:有符号型和无符号型。定义形式如下: signed char ch1; unsigned char ch2; 对字符型变量赋值有两种方式。一种是使用字符常量,比如: char c1 = n; unsigned c2 = n;,4.2.3 字符变量,另一种是使用整型赋值,整型会自动转化为相应的ASCII码复制给字符变量。比如:

10、 char c1 = 97; * 即a * unsigned c2 = 49; * 即1 * printf函数和scanf函数对字符型数据的处理格式为%c。,4.2.4 字符型的存储方式,字符型数据类型的存储方式和整型十分相似。 有符号字符型和有符号整型一样,最高位为符号位,其余部分都属于数值部分,其值等于该字符型数据的数值的绝对值。 无符号字符型只含数值部分。,4.3 浮点型数据类型,C语言共定义了如下三种浮点型数据类型以表示不同精度不同数值范围的浮点数。 float,单精度型 double,双精度型 long double,长双精度型,4.3.1 字节长度,C标准中对不同浮点型的字节长度有

11、以下规定:float型不大于double型,double型不大于long double型。在不同编译器和不同硬件环境下,各类型的字节长度有所变化。,4.3.2 浮点型常量,浮点型常量是用以表示浮点数值的常量。浮点型常量有三种类型:float型常量、double型常量和long double型常量。C语言中的浮点型数值默认为双精度类型,可以使用f或F作为后缀得到单精度型常量,或使用l或L作为后缀得到长双精度常量。它们的表示有小数形式和指数形式两种形式。 小数形式的示例有:1500.13、3.1415926、-0.007。 指数形式有三部分,数值1、e或E、数值2,其值等于(数值1)(10的(数值

12、2)次方)。上述小数形式的示例用指数表示依次为:1.50013e3,31415.926E-4,-0.7e3,中间的e大小写均可。,4.3.2 浮点型常量,浮点型常量的整数部分为0时,省略整数部分的0也是合法的,比如:-0.007可以写为-.007,-0.7e3可以写为-.7e3。 指数形式中,e前面必须有数字,数值2必须存在且为整数。以下形式是非法的: 1.e7 e前面必须紧挨着数字 0.77e3.2 e后面必须为整数 e2 e前必须有数字 2e e后面必须有整数,4.3.3 浮点型变量,浮点型变量是用以存储浮点型数值的变量。C语言中定义了三种浮点型变量:float型变量(单精度变量),dou

13、ble型变量(双精度变量)和long double型变量(长双精度变量)。下面是这几种浮点类型定义变量的形式如下: float f; double d; long double ld;,4.3.3 浮点型变量,从前面的讨论可以知道,基本上,三种类型所占的字节长度是不一样的,因此它们能表示的精度和数值范围也是不一样的,如下表所示。,4.3.4 浮点型的精度,不同浮点型的精度不同,精度从低到高依次为float型、double型和long double型。下面的程序可以检测三种浮点型的精度。,4.3.5 浮点型的数值范围,不同浮点型可以表示的数值范围也不同,由于浮点型在内存中是以科学计数法的方式来存

14、储的,因此其数值范围只能使用数量级范围来表示。可表示的数量级范围从小到大为依次为:float型、double型和long double型。,4.3.6 浮点型的存储方式,浮点型的存储方式和其他类型有很大不同,而不同编译器之间也存在差别,但大部分都遵从IEEE数值标准。下面以Linux下的GCC 3.2.2的实现为例,讨论浮点型的存储方式。 浮点型的内存形式包含3个部分: 1符号位 浮点型的符号位只有一位,为其最高位。如果该位为1,则表示其为负数;如果该位为0,则表示其为非负数。,4.3.6 浮点型的存储方式,2指数位 浮点型的指数位以补码形式存储其科学计数法表示形式的指数部分。指数位决定浮点型

15、可存储的数值范围。但是,需要注意的是,浮点型数据的内存形式中的指数位的值并非真正的指数值,真正的指数值为该类型的偏差值减去该存储值的结果。偏差值是为了校正指数值而设定的,每种类型的偏差值是固定的,不同类型的偏差值不同。,4.3.6 浮点型的存储方式,3基数位 基数位是浮点型的最后一部分,其位数决定精确度。long double型的基数位即为其科学计数法的基数位的二进制表示形式。float型和double型的基数位与long double型略有不同。由于科学计数法的基数表示为二进制时,由于二进制中除了0即为1,故可以确定其整数位肯定为1。因此,为了得到多一位的存储空间,存储float型和doub

16、le型数据时,省去基数的整数位,而默认其整数位为1。,4.3.6 浮点型的存储方式,在不同浮点型中,这三个部分所占空间不同,下表列出了 GCC中各浮点类型的分段情况。,4.4 使用typedef定义类型,除了前几节介绍的C语言自带的数据类型外,程序员还可以使用关键字typedef定义自己的数据类型。本节将介绍typedef语句的作用以及如何在C中合理使用typedef语句。,4.4.1 typedef的标准形式,typedef作用是为数据类型起一个新的名字。typedef语句由三个部分组成:关键字typedef、原数据类型名和新数据类型名。其标准形式如下: /* typedef 原数据类型 新数据类型 */ typedef oldType newType; 其在后面的程序中,便可以使用newType来代替oldType。执行typedef语句后,编译器会将程序中遇到的newType使用oldType来代替。例如: typedef c

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

最新文档


当前位置:首页 > 高等教育 > 大学课件

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