《第二讲_数据类型.ppt》由会员分享,可在线阅读,更多相关《第二讲_数据类型.ppt(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二讲 数据类型主讲:谢华成教学目的教学目的1,掌握C语言的数据类型2,掌握整型、实型、字符型数据的常量表示3,掌握整型、实型、字符型数据的变量表示4,各种不同类型数据间的转换C程序设计网络信息中心教研室重点和难点重点和难点重点:重点:各种基本数据类型的常量和变量难点:难点:不同类型的数据在内存中的物理存储形式C程序设计网络信息中心教研室数数据据类类型型基本类型基本类型整型整型短整型短整型 (short)整型整型 (int)长整型长整型 (long)实型实型(浮点型浮点型)单精度型单精度型(float)双精度型双精度型(double)数值类型数值类型字符类型字符类型(char)枚举类型枚举类型
2、(enum)构造类型构造类型(组合类型组合类型)数组类型数组类型结构体类型结构体类型(struct)共用体类型共用体类型(union)指针类型指针类型空类型空类型 (void)不返回任何类型的数据不返回任何类型的数据2.1 C的数据类型 C程序设计网络信息中心教研室2.1 C的数据类型 类型类型类型标识符类型标识符占用占用字节字节数值范围数值范围基本类型基本类型int2-3276832767短整数短整数short int4-2147483648214748647长整数长整数long int4-2147483648214748647无符整数无符整数unsigned int2065535无符号短整
3、数无符号短整数unsigned short2065525无符号长整数无符号长整数unsigned long404294967295单精度实数单精度实数float410-37 3.4X1038(精度精度67位位)双精度实数双精度实数double8 10-307 1.7X10308(精度精度1516位位)长双精度实数长双精度实数Long double16 10-4923 1.2X104923(精度精度1819位位)VisualC+数值型数据占用的存储空间及数值范围C程序设计网络信息中心教研室C语言中,标识符分为:关健字和用户自定义标识两类。一、关健字在语言中的关键字,根据其功能不同可分为以下几种。
4、2.2标识符定义数据类别:autostaticregisterextern用于语句的:ifelsecasedefaultbreakdowhileforswitchgotoreturncontinue为原有的数据类型命新名:typedef求字节数:sizeof预处理:defineincludeundefifelseendififdefifndef说明数据类型:intlongshortcharunsignedfloatdoubleenumstructunionvoidconstC程序设计网络信息中心教研室2.2 标识符二、标识符定义:用来标识变量、常量、函数等的字符序列组成:只能由字母、数字、下划
5、线组成,且第一个字母必须是字母或下划线字母区分大小写不能使用关键字长度:最长32个字符命名原则:见名知意不宜混淆如l与I,o与0例:判断下列标识符号合法性sum Sum M.D.John day Date 3days student_name#33 lotus_1_2_3 char ab _above$123M.D.John3days#33char$123abC程序设计网络信息中心教研室例1、可在C程序中用做用户标识符的一组标识符是()。(2007年9月全国计算机等考试原题)A、andB、DateC、HiD、case例2、以下()是不合法的标识符。A、abc.cB、fileC、MianD、pr
6、ontf例3、在 C 程序中,APH 和 aph 代表不同的变量。C程序设计网络信息中心教研室习惯上,符合常量用大写字母表示定义符合常量时,不能以“;”结束一个#define占一行,且要从第一列开始书写一个源程序文件中可含有多个#define命令,不同的#define命令指定的“标识符”不能相同直接常量:整型常量 实型常量 字符常量 字符串常量如#define PI 3.14159265352.3 常量定义:程序运行时其值不能改变的量(即常数)分类:符号常量:用标识符代表常量定义格式:#define 符号常量 常量C程序设计网络信息中心教研室1、整型常量(整常数)三种形式:十进制整数:由数字0
7、9和正负号表示.如 123,-456,0八进制整数:由数字0开头,后跟数字07表示.如0123,011十六进制整数:由0 x开头,后跟09,af,AF表示.如0 x123,0Xff例 12 与 12L例 30000 为int型 65536 为long int 型整型常量的类型根据其值所在范围确定其数据类型在整常量后加字母l或L,认为它是longint 型常量问题:0123=()100 x123=()100Xff=()1083291255问题:0123=()100 x123=()100Xff=()10C程序设计网络信息中心教研室例1、表达式 0195 是一个八进制整数。例2、08是正确的整型常量
8、。例3、以下选项中,合法的一组C语言数值常量是()(2007年9月全国计算机等考试原题)A、028B、12.C、.177D、0 x8A.5e-3OXa234c1.510,000-0 xf4.5e0Oabc3.e5例4、以下选项中正确的常量是()。A、12B、-20C、1,000D、456例5、在C语言中,不正确的int类型的常数是A、32768B、0C、037D、0 xAFC程序设计网络信息中心教研室2、实型常量(实数或浮点数)表示形式:十进制数形式:(必须有小数点)如0.123,.123,123.0,0.0,123.整数部分和小数部分都可省,但不能同时省指数形式:(e或E之前必须有数字;指数
9、必须为整数;指数部分和尾数部分均不可省)如12.3e3,123E2,1.23e4,e-5 ,1.2E-3.5实型常量的类型默认double型在实型常量后加字母f或F,认为它是float 型C程序设计网络信息中心教研室3、字符常量定义:用单引号括起来的单个普通字符或转义字符.字符常量的值:该字符的ASCII码值转义字符及其含义:转义字符含义nvradddtbf“xhh转义字符含义换行垂直制表回车响铃单引号3位8进制数代表的字符水平制表退格换页反斜线双引号2位16进制数代表的字符如 101 -A 012 -n 376 -x61 -a 60 -0 483 -()例:A-101-x41-65如 A65
10、,a97,048,n10如aA?n101转义字符:反斜线后面跟一个字符或一个代码值表示例 main()printf(“Yb=n”);运行结果:屏幕显示:=打印机输出:C程序设计网络信息中心教研室字符常量与字符串常量不同4、字符串常量定义:用双引号(“”)括起来的0个或者多个字符组成的序列存储:每个字符串尾自动加一个 0 作为字符串结束标志h e l l o 0例 字符串“hello”在内存中a a 0例 a“a”例空串“”0例:char ch;ch=“A”;例:char ch;ch=A;如:“Clanguageprogramming”、“an”、“#123”、“”等为字符串常量C程序设计网络信
11、息中心教研室编译程序根据变量定义为其分配指定字节的内存单元.地址inta=1,b=-3,c;abc2字节2字节2字节地址地址.内存1-3随机数2.4 变量变量概念:在程序运行中,其值会发生变化变量名与变量值变量定义的一般格式:数据类型变量1,变量2,变量n;变量初始化:定义时赋初值例:int a,b,c;float data;决定分配字节数和数的表示范围合法标识符例:int a=2,b,c=4;float data=3.67;char ch=A;int x=1,y=1,z=1;int x=y=z=1;变量的使用:先定义,后使用例1intstudent;stadent=19;/Undefined
12、symbolstatentinfunctionmain例2floata,b,c;c=a%b;/Illegaluseoffloatingpointinfunctionmain变量定义位置:一般放在函数开头main()int a,b=2;float data;a=1;data=(a+b)*1.2;printf(“data=%fn”,data);变量定义可执行语句main()int a,b=2;a=1;float data;data=(a+b)*1.2;printf(“data=%fn”,data);C程序设计网络信息中心教研室2.4 变量变量2.4.1 整型变量:整型变量:1.1.整型数据在内存中
13、的存储形式整型数据在内存中的存储形式整型数据在内存中以二进制形式存放,每一个整型变量在内存中占个字节例:inti,k;i=10;j=-10;i=1000000000 00000000 00000000 10101010正数j=-1011111111 11111111 11111111 01100110负数C程序设计网络信息中心教研室2.4 变量变量2.2.整型变量的分类整型变量的分类:基本型基本型 intint短整型短整型 short short intint 或或 shortshort长整型长整型 long long intint 或或 longlong无符号型无符号型无符号整型无符号整型
14、unsigned unsigned intint 无符号长整型无符号长整型 unsigned long unsigned long 无符号短整型无符号短整型 unsigned shortunsigned short 说明:说明:无符号型变量只能存放不带符号的整数,不能存放负数无符号型变量只能存放不带符号的整数,不能存放负数 一个无符号整型变量中可以存放的正数的范围比一般整型变量中正数的范围大一个无符号整型变量中可以存放的正数的范围比一般整型变量中正数的范围大一倍一倍-32768-32768 32767 327670 0 65535 6553511111111 11111111 11111111
15、 11111111unsignedunsigned01110111 11111111 11111111 11111111intint一个字节一个字节符号位符号位0 0 正数正数1 1 负数负数C程序设计网络信息中心教研室3.3.整型变量的定义整型变量的定义 (定义变量一般放在函数开头定义变量一般放在函数开头)int a,b;short c,d;或或 short int c,d;long e,f;或或 long int e,f;unsigned g,h;或或 unsigned int g,h;例例:整型变量的定义和使用整型变量的定义和使用#include include main()main()
16、intint a,b,c,d;a,b,c,d;*指定指定a,b,c,da,b,c,d为整型变量为整型变量*unsigned u;unsigned u;*指定为无符号整型变量指定为无符号整型变量*/a=12;b=-24;u=10;a=12;b=-24;u=10;c=c=a+u;da+u;d=b+ub+u;printf(a+uprintf(a+u=%d,b+u=%dn,c,d);=%d,b+u=%dn,c,d);2.4 变量变量运行结果为运行结果为 +=22,b+u=-14C程序设计网络信息中心教研室4.整型数据的溢出整型数据的溢出例例:main()main()intint a,b;a,b;a=3
17、2767;a=32767;b=a+1;b=a+1;printf(%d,%dn,a,bprintf(%d,%dn,a,b););运行结果:运行结果:a=32767,b=-32768a=32767,b=-327682.4 变量变量一个int型变量的最大值为32767,如果再加1,其结果不是32768,而是-32768。即“溢出”C程序设计网络信息中心教研室0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1a 符号位符号位32767b=a+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0符号位符号位-32768b 2.4 变量变量C程序设计网络信息中心教研室例1、下列定义
18、中,定义的变量可以存放 123.4。Along aBunsigned bCint dDfloat c例2、以下关于long、int和short类型数据占用内存大小的叙述中正确的是()(2007年9月全国计算机等考试原题)A、均占4个字节B、根据数据的大小来决定所占内存的字节数C、由用户自己定义D、由C语言编译系统决定C程序设计网络信息中心教研室2.4.2 实型变量实型变量1.1.实型数据在内存中的存放形式实型数据在内存中的存放形式 .314159+1数符数符 小数部分小数部分 指数指数+.314159 10 3.141591例:实数例:实数3.141593.14159在内存中的存放形式示意:在
19、内存中的存放形式示意:2.4 变量变量一个实型数据一般在内存中占一个实型数据一般在内存中占4个字节(个字节(32位)。位)。实型数据是按照指数形式存储的实型数据是按照指数形式存储的。C程序设计网络信息中心教研室2.4.2 实型变量实型变量2.2.实型变量的分类实型变量的分类实型变量分为单精度(实型变量分为单精度(float型)、双精度(型)、双精度(double型)和长双精度型(型)和长双精度型(long double型)型)类型类型位数位数有效数字有效数字 数值范围数值范围float3267-3.410383.41038double641516-1.7103081.710308longdou
20、ble1281819-1.21049321.21049322.4 变量变量C程序设计网络信息中心教研室1、字符变量的定义、字符变量的定义 字字符符型型变变量量用用来来存存放放字字符符常常量量,注注意意只只能能放放一一个个字字符符,不不要要以为在一个字符变量中可以放一个字符串以为在一个字符变量中可以放一个字符串(包括若干字符包括若干字符)。字符变量的定义形式如下字符变量的定义形式如下:char c1,c2;它表示c1和c2为字符型变量,各可以放一个字符,因此可以用下面语句对c1、c2赋值:c1=a;c2=b;2.4.3 字符型变量字符型变量:2.4 变量变量C程序设计网络信息中心教研室 2、字符
21、数据在内容中的存储形式及其使用方法、字符数据在内容中的存储形式及其使用方法(1)一般以一个字节来存放一个字符,或者说一个字符变量在内存中占一个字节。(2)将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单元中。2.4 变量变量例如:字符a的ASCII代码为97,b为98,在内存中实际上是以二进制形式存放的,如下所示。9797989801100001011000010110001001100010c1c2C程序设计网络信息中心教研室 在在C C中中,字符型数据和整型数据之间可以通用字符型数据和整型数据之间可以通用,一个字符数据
22、既可以字一个字符数据既可以字符形式输出符形式输出,也可以以整数形式输出。也可以以整数形式输出。例:例:向字符变量赋以整数向字符变量赋以整数 main()char c1,c2;c1=97;c2=98;printf(“%c%c”,c1,c2);输出结果输出结果:a b2.4 变量变量main()char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(“%c%c”,c1,c2);输出结果输出结果:A B:A B 以字符形式输出时以字符形式输出时,将存储单元中的将存储单元中的ASCII码转换成相应的字符码转换成相应的字符,然后输出;然后输出;以整数形式输出时以整数形
23、式输出时,直接将直接将ASCII码作为整数输出码作为整数输出 也可以对字符数据进行算术运算也可以对字符数据进行算术运算,此时此时,相当于对它们的相当于对它们的ASCII码码进行算术运算进行算术运算C程序设计网络信息中心教研室说明:说明:1.字符数据与整型数据可以互相赋值字符数据与整型数据可以互相赋值int i;char c;i=a;/*i的值输出得到的值输出得到97 */c=97;/*输出输出C可得到字符可得到字符 a*/2.2.字符数据可以以字符形式输出,也可以用整数形式输出字符数据可以以字符形式输出,也可以用整数形式输出printf(“%c,%dn”,c,c);输出:输出:a,97prin
24、tf(“%c,%dn”,i,i);输出:输出:a,97 2.4 变量变量C程序设计网络信息中心教研室C C语言允许数据值从一种类型转换成另一种类型语言允许数据值从一种类型转换成另一种类型数据类型的转换有如下三种基本形式:数据类型的转换有如下三种基本形式:同一类型但长度不同的数据间的转换同一类型但长度不同的数据间的转换 定点方式与浮点方式之间的转换定点方式与浮点方式之间的转换 整型数中有符号格式与无符号格式之间的转换整型数中有符号格式与无符号格式之间的转换整型、实型整型、实型(float,double)(float,double),字符型数据间可以混合运算,在字符型数据间可以混合运算,在进行运算
25、时进行运算时,不同类型的数据要先转换成同一类型,然后进行运不同类型的数据要先转换成同一类型,然后进行运算。算。2.5 数据间的混合运算数据间的混合运算C程序设计网络信息中心教研室char,shortchar,shortintintunsignedunsignedlonglongdoubledoublefloatfloat向左箭头表示必定的转换向左箭头表示必定的转换纵向箭头表示当运算对象纵向箭头表示当运算对象 为不同类型时的转换方向为不同类型时的转换方向低低高高 转换规则如图:转换规则如图:以上类型转换是由系统自动进行的以上类型转换是由系统自动进行的2.5 数据间的混合运算数据间的混合运算(P23)C程序设计网络信息中心教研室例例:intint i;i;float f;float f;double d;double d;long e;long e;10+a+i*f-d/e10+a+i*f-d/e2.5 数据间的混合运算数据间的混合运算(P23)C程序设计网络信息中心教研室课堂小结课堂小结基本数据类型整型(int)单精度实型(float)双精度实型(double)字符型(char)基本数据类型的常量表示变量定义不同类型的数据在内存中的存储方式C程序设计网络信息中心教研室