C语言的数据类型.ppt
《C语言的数据类型.ppt》由会员分享,可在线阅读,更多相关《C语言的数据类型.ppt(71页珍藏版)》请在三一办公上搜索。
1、第2章 C语言的数据类型、运算符及其表达式,第一节 C的数据类型及常量数据第二节 变量及其类型第三节 运算符和表达式,1/71,C语言程序设计 龙昭华主编,课件制作:刘达明 023-66834110,第一节 C的数据类型及常量数据,(第二章 C语言的数据类型、运算符及其表达式),2/71,由于“程序=算法+数据结构”,算法处理的对象是数据,而数据是以某种特定的形式存在的(如整数、实数、字符等)。不同的数据之间往往还存在某些联系(如若干整数组成一个整数数组)。所谓数据结构指的是数据的组织形式,如数组就是一种数据结构。不同的计算机语言所允许定义和使用的数据结构是不同的,处理同一类问题如果数据结构不
2、同,算法也会不同。因此考虑算法时,必须注意数据结构。,一、C的数据类型分类,实际上,应当综合考虑算法和数据结构,选择最佳的数据结构和算法。C语言的数据结构是以数据类型形式出现的。C的数据类型分类如右边所示:,课件制作:刘达明 023-66834110,二、常量及其类型,第一节 C的数据类型及常量数据,3/71,在程序运行过程中,其值不能被改变的量称为常量。1、直接常量 常量一般从其字面形式即可判断,这种常量称为字面常量或直接常量。常量分为以下不同类型:、整型常量 即整常数,它在C中有三种表示方法:十进制整数:如:58、123、-456、0、-9等。它们是以非数字0开头,并由数字09组成,可以带
3、正负号。八进制整数:如:011、089、-0112、00、-09等。它们是以数字0开头,并由数字07组成,可以带正负号。十六进制整数:如:0 x123、0X119、0 x8f、-0 x1E、0 x0等。它们是以数字0和字母x联合组成的0 x或0X开头,并由数字09和字母AF(或af)组成,可以带正负号。注意:在整型常数后添加字母“L”或“l”,是长整型数,添加“u”则是无符号基本整型数。,(第二章 C语言的数据类型、运算符及其表达式),课件制作:刘达明 023-66834110,、实型常量,第一节 C的数据类型及常量数据,4/71,实型常量又称浮点数,它即数学里的实数,在C中有两种表示方法:十
4、进制小数形式:它由数字09和小数点组成(注意必须有小数点.),可以带正负号。如:.123、56.、89.0、-456.32、0.0、-.9、0.78、-0.99等。指数形式:也称科学表示法。如:123e3或123E3都代表123*103。注意:字母e或E之前必须有数字,且字母e或E之后的指数必须是整数。一个实数可以有多种指数表示形式,如:123.456可以表示为123.456e0、12.3456e1、1.23456e2、.123456e3、0.0123456e4等。我们把在字母e或E之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字的表示称为“规范化的指数形式”。如1.23456e
5、2、-6.8e8、8.9e-2等。一个实数在用指数形式输出时,是按规范化的指数形式输出的。如:5689.65按指数形式输出的话,结果为5.68965e+003。注意:浮点常数只有一种进制(十进制);所有浮点常数都被默认为double型;实数常量后面跟一个f或F表示该常量为float型,或跟一个l或L表示该常量为long double型。如:8.9、8.9F、8.9L表示不同的数据类型。,(第二章 C语言的数据类型、运算符及其表达式),课件制作:刘达明 023-66834110,、字符型常量,第一节 C的数据类型及常量数据,5/71,C的字符型常量是用单引号括起来的一个字符。(注意是单引号)如:
6、A、a、D、*、$、0等。注意:A和a是两个不同的字符常量。除了以上形式的字符常量外,C语言还有一种特殊的字符常量转义字符。它以“”开头,使用时用一对单引号将其括起来。如n表示回车换行字符,即键盘上的“Enter”键。,如:printf(“a=11n”);printf(“c=33”);输出结果为:a=11b=33如果不带n字符,则输出:a=11c=338进制:101表A。16进制:x41表A。,(第二章 C语言的数据类型、运算符及其表达式),课件制作:刘达明 023-66834110,、字符串常量,第一节 C的数据类型及常量数据,6/71,字符串常量是一对双引号“”括起来的字符序列。如:“ho
7、w do you do!”、“a”、“123”。C规定:在每一个字符串的结尾加一个“字符串结束标志”(为字符0),以便系统据此判断字符串是否结束。0是一个ASCII码为0的字符,从ASCII代码表中可以看到ASCII码为0的字符是“空操作符”,即它不引起任何控制动作,也不是一个可显示字符。特别注意:用一对单引号括起来的是字符,它只占一个字节。而一对双引号“”括起来的是字符串,它占至少两个字节,在字符串结尾处有空字符0。在C语言中,没有专门的字符串变量,如果想将一个字符串存放在变量中,必须使用字符型数组。,(第二章 C语言的数据类型、运算符及其表达式),课件制作:刘达明 023-66834110
8、,2、符号常量,第一节 C的数据类型及常量数据,7/71,符号常量是指用一个标识符代表的常量,即标识符形式的常量。定义符号常量的方法是用#define命令把一个常量名和常量联系起来,符号常量的使用给调试程序带来很大的方便。符号常量的值在其作用域内不能改变,也不能重新赋值。如:#define N 5表示N代表常量5。习惯上,符号常量名用大写,变量名用小写,以示区别。使用符号常量有如下好处:第一,含义清楚。第二,在需要改变一个常量时能做到“一改全改”。,(第二章 C语言的数据类型、运算符及其表达式),课件制作:刘达明 023-66834110,例 2.1:,第一节 C的数据类型及常量数据,8/71
9、,(第二章 C语言的数据类型、运算符及其表达式),#include#define PRICE 30main()int num,total;num=10;total=num*PRICE;printf(“total=%dn”,total);程序运行结果为:total=300,#define命令出现在程序中函数的外面,其有效范围为定义命令之后到文源文件结束。通常,#define命令写在文件开头,函数之前作为文件一部分,其作用域为整个文件。如例2.1。当然也可以用#undef命令终止#define的作用域。如例2.2。,例 2.2:#include#define TEMP 100main()#unde
10、f TEMPf1(),TEMP的作用域,课件制作:刘达明 023-66834110,第2章 C语言的数据类型、运算符及其表达式-习题1,9/71,C语言程序设计 龙昭华主编,习 题(一)*复习本章已讲内容,预习本章剩余内容。,课件制作:刘达明 023-66834110,第二节 变量及其类型,10/71,一、变量及其分类,1、变量的概念 变量是指在程序运行过程中,其值可以改变的量。变量具有三要素:变量名、变量值、变量地址(即变量存储单元的首地址)。即一个变量应该有一个名字,在内存中占据一定的存储单元,在该存储单元中存放变量的值。,(第二章 C语言的数据类型、运算符及其表达式),变量名实际上是一个
11、符号地址,在对程序编译时,由系统给每个变量名分配一个内存地址。在程序中从变量中读值,实际上是通过变量名找到相应的内存地址,从其存储单元中读取数据。变量要先定义后使用。变量名是标识符(用来标识变量、符号常量、函数名、数组名、类型名、文件名等的有效字符序列)的一种,它是由字母、数字、下划线三种字符组成的,且第,一个字符必须为字母或下划线,其长度不要超过8个字符(MSC)或32个字符(TurboC)。为了通用,建议不要超过8个字符。对于一般用来表示整数变量和临时变量的单字符变量名,由于易与数字1和0混淆,而不使用字母l和o,单字符变量一般使用i、j、k、m、n。,课件制作:刘达明 023-66834
12、110,变量值:,第二节 变量及其类型,11/71,变量是用来存放数据的,由于数据有不同的类型,因此要定义相应类型的变量来存放它。对某变量规定数据类型,实际上是对该变量内存中存放的二进制数值按照相应数据类型的规定进行相应的值解释而已。变量地址:在C程序编译时,会根据变量的数据类型为每个变量划出一定数目的存储单元存放变量的值,变量所占据的存储单元的起始地址就是变量的地址。变量的地址表示为:&变量名,例如:char a=D;则 则&n就是整型变量n的地址,如右图所示:整型变量n的地址3002,但整型变量n的值就存储在存储单元3002和3003两个字节中。,例如:int a,b;scanf(“%d,
13、%d”,(第二章 C语言的数据类型、运算符及其表达式),课件制作:刘达明 023-66834110,2、变量的分类,第二节 变量及其类型,12/71,根据所声明的位置不同,变量可分为局部变量、形式参数和全局变量。变量可以在程序中三个地方声明:函数内部、函数的参数定义中或所有的函数外部。根据变量存储类型,变量可分为自动变量(用auto声明)、静态变量(用static声明)、外部变量(用extern声明)和寄存器变量(用register声明)。声明变量时,如果不指定存储类型,则其缺省的存储类型为自动变量。因此,定义自动变量时不必使用auto声明。我们使用的大多数变量都属于自动变量存储类型。根据数据
14、类型,变量可分为整型变量(用int、long等声明)、实型变量(用float、double等声明)、字符型变量(用char声明)、数组变量、指针型变量、结构体变量(用struct声明)、共用体变量(用union声明)、枚举类型变量(用enum声明)。,(第二章 C语言的数据类型、运算符及其表达式),课件制作:刘达明 023-66834110,3、变量的声明和赋值,第二节 变量及其类型,13/71,变量的声明方法:类型名;如:int i,j,k;char a,b,c;,(第二章 C语言的数据类型、运算符及其表达式),变量赋初值的方法:如:int i=3,j;char a=A,c;j=10;c=9
15、;,注意:在C语言中,要求对所有用到的变量做强制定义,也就是说“先定义,后使用”,这样做有如下好处:凡是未被事先定义的,不做变量名,保证程序中变量名不至于前后书写不一致。每一变量被指定为一确定类型,在编译时就能为其分配相应的存储单元。指定每一变量属于一个类型,这就便于在编译时,据此检查该变量所进行的运算是否合法。如:整型变量a和b可以进行求余运算:a%b,得到 a/b 的余数。但如果将a和b指定为实型变量的话,则不允许进行“求余”运算。,课件制作:刘达明 023-66834110,二、基本数据类型变量,第二节 变量及其类型,14/71,1、整型变量 整型变量在内存中的存放形式 数据在内存中是以
16、二进制形式存放的。整型变量是用来存放整型数据的变量,而整型数据在计算机内存中以补码形式存放的。(一个正数的补码和其原码相同。而负数的补码是将该值的绝对值的二进制形式,按位取反再加1。),当符号位sf为0时,表示该数为正数;当sf为1时,表示该数为负数。例如:int i=10,j=-10;的存储方式见图a和图b。图a表示存放示意图,图b是数据在内存中的实际存放情况。整型数为16位二进制数。,(第二章 C语言的数据类型、运算符及其表达式),课件制作:刘达明 023-66834110,有符号整型数据和无符号整型数据的存储:,第二节 变量及其类型,15/71,有符号整数的范围-3276832767,无
17、符号整数的范围065535。无符号整数使用unsigned修饰。在声明变量时,如果不指定unsigned或指定signed,则表示有符号型数据,符号位有效。如果指定unsigned,则表示无符号型数据,符号位为该数本身。,(第二章 C语言的数据类型、运算符及其表达式),如:int a,b;a=32767;b=-1;unsigned int c;c=65535;,课件制作:刘达明 023-66834110,、整型变量的分类,第二节 变量及其类型,16/71,有符号整型变量 基本型:一般占2个字节(16位),int 短整型:一般占2个字节(16位),short int 长整型:一般占4个字节(32
18、位),long int 有符号整型变量使用signed修饰,但缺省的数据类型即表示有符号整型数据,因此可以省略修饰符signed。无符号整型变量 无符号基本型:一般占2个字节(16位),unsigned int 无符号短整型:一般占2个字节(16位),unsigned short int 无符号长整型:一般占4个字节(32位),unsigned long int,(第二章 C语言的数据类型、运算符及其表达式),课件制作:刘达明 023-66834110,、整型变量长度,第二节 变量及其类型,17/71,C标准没有具体规定整型变量各类型数据所占内存字节数,只要求long型数据长度不短于int型,
19、short型不长于int型。具体如何实现,由各计算机系统及C系统自行决定。各种计算机的数据字长,在C系统中,通常把long定义为32位,把short定义为16位,而int可以是16位或32位,主要取决于机器字长,一般以一个机器字word存放一个int数据。,(第二章 C语言的数据类型、运算符及其表达式),课件制作:刘达明 023-66834110,各种整型数据在C系统中的长度及取值范围,第二节 变量及其类型,18/71,ANSI标准建议各种整型数据所占位数和数值范围如右表所示(TurboC与该表定义一致):注意:在微机上用long型可以得到大范围的整数,但同时会降低运算速度,因此除非不得已,不
20、要随便使用long型数据。,(第二章 C语言的数据类型、运算符及其表达式),课件制作:刘达明 023-66834110,、整型变量的定义与赋值,第二节 变量及其类型,19/71,每个变量使用前必须定义,一般放在函数的开头的声明部分定义变量。如:定义:int a,b;short i,j;long x,y;/*定义有符号整型变量*/unsigned int c,d;unsigned short e,f;unsigned long s,t;赋值:a=21910;b=-20;i=-30201;j=90;x=801023;y=-203984;c=400u;d=9010;e=1002;f=2030;s=8
21、0L;t=-987L;注意:一个在-3276832767范围内的整数,则认为是int型,可赋给int型和long型。一个超过了-3276832767范围内的整数,而在-2147483648-2147483647范围内,则认为它是long型,可以赋给long型。一个整常量后面加一个字母u,则认为是unsigned int型,如:123u。如果写成-12345u,则先将-12345转换成其补码53191,然后再按无符号数存储。如:unsigned int a=-12345u;printf(“%d,%un”,a,a);结果为:-12345,53191。一个整常数量后面加一个字母L或l,则认为是lon
22、g型。这往往用于函数调用,如果函数的形参为long,则要求实参也为long型,此时用123则不行,而要用123L代入。,(第二章 C语言的数据类型、运算符及其表达式),课件制作:刘达明 023-66834110,、整型数据的溢出,第二节 变量及其类型,20/71,一个int型变量的最大允许值为:32767。如果再加1,则结果会变成-32768。,(第二章 C语言的数据类型、运算符及其表达式),例 2.3:main()int a=32767,b;long c;b=a+1;c=(long)a+1L;printf(“a=%d,b=%d,c=%ld”,a,b,c);运行结果为:32767,-32768
23、,32768,例 2.4:main()int x=-1;unsigned int y;y=x;printf(“%d,%d,%un”,x,y,y);运行结果为:-1,-1,65535,无符号数输出时,最高位数值变成符号位。如符号位为1,则输出负数。,课件制作:刘达明 023-66834110,2、实型变量,第二节 变量及其类型,21/71,实型数据在内存中的存放形式 存放实数的变量就是实型变量。一个实型变量在内存中是按浮点数指数形式存放的。系统把一个实型数据分成小数部分和指数部分,分别存放。指数部分采用规范化的指数形式。常用的微机系统中一个实型数据在内存中占4个字节(32位),在这32位中,究竟
24、用多少位来表示小数部分,多少位来表示指数部分,标准C并无规定,由各C编译系统自定。不少C编译系统以24位表示小数部分(包括符号),以8位表示指数部分(包括指数的符号)。小数部分占的位(bit)数愈多,数的有效数字就越多,精度愈高。指数部分占的位数越多,则能表示的数值范围就越大。,(第二章 C语言的数据类型、运算符及其表达式),如实数:31.4159的指数形式为:.314159*102,它在内存中的存放形式可以表示为右图所示。图中用十进制表示的,实际上在计算机中是用二进制来表示小数部分,用2的幂次来表示指数部分。,课件制作:刘达明 023-66834110,、实型变量的分类及其长度,第二节 变量
25、及其类型,22/71,C的实型变量分为:单精度(float型)、双精度(double)、长双精度(long double)型三种。下表列出了微机上常用的C编译系统(如TurboC、MSC、Borland C)的实型数据的情况。注意:不同的系统、不同的资料会有所差异,浮点数的内部表示与机器的硬件结构相关,是最少被计算机标准化的内容之一,对特定的编译器都应阅读其文档资料以了解float和double的精度和范围(在ANSI中的limits.h也有列示)。,(第二章 C语言的数据类型、运算符及其表达式),如:float是7位有效数字,float a=7758.521125;a的后3位不其作用,实际上
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 数据类型
链接地址:https://www.31ppt.com/p-6503946.html