数据类型与运算规则A.ppt
邸慧军计算机学院,C语言程序设计 数据类型与运算规则,网络教室选课目前已经可以选课输入自己所属小组的选课密码以后有通知会发在网络教室上上机时间基本时间:周四晚上,18:4020:30协调时间:?,C语言程序设计,1,数据与数据类型常量与变量整型数据及其表示实型数据及其表示字符型数据及其表示小结,2,本节概要,3,数据与数据类型,常量 变量 运算符 表达式 函数,我们人能明白的、用自然语言和数学语言描述的问题 计算机能明白的、C语言语法规则描述的问题,常量,变量,函数,程序设计语言的基本规则包括:,4,数据与数据类型,问题常量3、5和3.6的处理是否相同?变量x如何表示?如何存放?计算机如何知道3和5之间的关系?如何输入?如何存放?计算机如何识别“=”?运算结果放在哪里?,计算机完成该计算,首先要解决数据的输入和存放问题,5,数据与数据类型,程序的任务是对数据进行处理,数据是程序处理的对象,而运算符是施加给这些数据的操作。数据和运算符是表达式的基本元素。,数据的存储数据的操作,程序,数据与数据类型C语言的基本数据类型算术运算与赋值运算关系运算与逻辑运算位运算其它运算混合运算及数据类型转换,第3章 数据类型与运算规则,6,本节,下一节,7,数据与数据类型,C语言中的数据类型 整数型 int 基本类型 实数型 float,double 字符型 char 指针类型数据类型 数组型 构造类型 结构型 struct 联合型 union 空类型 void,8,数据与数据类型,常量,字符常量,数值常量,计算机语言表示数据的基本形式,实型常量,整型常量,字符常量,字符串常量,变量,字符变量,数值变量,实型变量,整型变量,指针变量,整型,实型,字符型,数据与数据类型常量与变量整型数据及其表示实型数据及其表示字符型数据及其表示小结,9,本节概要,程序运行中,值保持不变的量常量的表示方法整型 100,125,-100,0实型 3.14,0.125,-3.789字符型 a,b,2字符串“a”,“ab”,“1232”举例x=100;y=3.14;c=a;,常量,10,符号常量:用来表示常量的标识符含义清楚在需要改变一个常量时能做到“一改全改”定义方式:define,const,enum例:已知圆半径r,求圆周长c和面积s的值#define PI 3.1416main()float r,c,s;scanf(%d,常量,11,Define:一种预处理命令编译程序时,预处理先把define的内容展开纯文本替换可以define任意东西,不只用来定义常量例子 1#define SAN 2+1如果x=SAN*SAN,x=?x=2+1*2+1=5推荐:#define SAN(2+1)例子 2#define add(x,y)(x+y)add(3,4)(3+4)add(3,x)(3+x),#Define,12,程序运行时,值可以改变的量有关变量的规定:变量通过变量名标识(标识符)变量名和内存中的存储单元相对应,编写程序时通过变量名来存、取存储单元变量必须先定义,再赋值,再使用,变量,13,55,存储内容,变量a,1000H1001H,256,12,常量:不占用内存空间!,内存地址,变量的定义在C语言中,用类型说明语句对变量进行定义,其形式如下:类型说明符 变量名表;,变量,14,int a,b;/*说明a,b为整型变量*/char c;/*说明c为字符变量*/double x,y;/*说明x,y为双精度实型变量*/,C程序中,常量直接以自身的存在形式体现其值和类型:12,0 x12,0 x12L,12.,.12,2e3,1.2f,2e3L符号常量:用标识符定义多次出现的常量#define PI 3.1415926常量不占内存变量以标识符的形式来表示类型int a;char c;double x,y;变量:存储数据的容器,读/写变量必须先定义,再赋值,再使用,常量与变量,15,数据与数据类型常量与变量整型数据及其表示实型数据及其表示字符型数据及其表示小结,16,本节概要,整数基本类型表,整型数据及其表示,17,int 基本整型short int 短整型long int 长整型unsigned int 无符号整型unsigned short int无符号短整型unsigned long int无符号长整型,整型变量基本整型int短整型short int长整型longint无符号整型unsigned int无符号短整型unsigned short无符号长整型unsigned long,整型数据及其表示,18,占内存字节数,2(16位机)4(32、64位机)242(16位机)4(32、64位机)24,整型变量的定义类型说明符 变量名表;int i,j;long k,m;unsigned int x,y;,整型数据及其表示,19,short 型数的表示范围:二进制补码表示占2个字节存储,整型数据及其表示,20,20,存储长度16位二进制(2B),0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1,0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1,1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,=1,=3,绝对值最大的负数?,=-215=-32768,a,最大的正数?,=215-1=32767,0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1,21,整型数据及其表示,16位机各类型数据通常取值范围,22,整型数据及其表示,32位机各类型数据通常取值范围,整型常量根据值大小默认类型在常量后面加l或L,表示long int型 例如:123L,0L,432l都是long int型常量整型常量的不同数值表示方法十进制:09八进制:07,以0开头十六进制:09,AF/af,以0 x或0X开头 例如100、-8L、0;010、024L;0 x18L、0X1F,整型数据及其表示,23,整型数据在使用中应注意以下几个问题:变量要先定义后使用;数据溢出;用常量给变量赋值时,类型要匹配类型不匹配时:类型转换(下一周讲)例:编写求两数和的C程序并上机运行。程序如下:,整型数据及其表示,24,25,整型数据及其表示,/*SUM.C源程序*/main()/*求两数和主函数*/short int a,b,c;/*说明a、b为短整型变量*/a=32767;/*为变量a赋最大值*/b=3;/*为变量b赋值*/c=a+b;/*计算a+b并将结果赋值给变量c*/printf(c=%dn,c);/*输出变量c的值*/,数据与数据类型常量与变量整型数据及其表示实型(浮点型)数据及其表示字符型数据及其表示小结,26,本节概要,实数基本类型表float 单精度型double 双精度型long double 长双精度型,实型数据及其表示,27,什么是数的范围?什么是有效位?,实型数据及其表示,28,28,尾数:log10(224)7.225,7位十进制数字,8位,23位+(1位),float,尾数b,阶码e,符号sign,阶码:2-1262127 10-381038,1位,实型变量,实型数据及其表示,29,名称 存储字节 数量级范围 有效数字 声明方法单精度 4 10-38-1038 7 float a;双精度 8 10-308-10308 16 double a;长双精度 16 10-4932-104932 19 long double a;,单精度实数的精度取决于小数部分的23+1位二进制数位所能表达的数值位数,将其转换为十进制,最多可表示7位十进制数字,所以单精度实数的有效位是7位。双精度型用于扩大存储位数,目的是增加实数的长度,减少累积误差,改善计算精度,实型数据及其表示,30,实型常量:小数形式至少有一个小数点和一个数字,如12.3,87.4,-0.25等;“.”不可省指数形式由十进制小数加上指数部分组成,形式为:十进制小数e(E)指数e前有数字,e后是整数2.5e3-56E8 66e3实型常量只能用十进制表示,不能用八进制和十六进制,实型数据及其表示,31,实型数据应用中的误差问题:由于机器存储的限制,使用实型数据会产生一些误差运算次数愈多,误差积累就愈大所以要注意实型数据的有效位,合理使用不同的类型,尽可能减少误差,实型数据及其表示,32,33,实型数据及其表示,例:/*输出不同实型数据*/main()float f;/*说明变量f为单精度型*/f=0.1234567110;printf(%.45fn,f);f=1.1234567110;printf(%.45fn,f);f=11.234567110;printf(%.45fn,f);f=112.34567110;printf(%.45fn,f);,超出范围的数机器如何处理?实型数的表示范围:绝对值小于最小正数:处理为0 下溢绝对值大于最大正数:提示出错 上溢,实型数据及其表示,34,数据与数据类型常量与变量整型数据及其表示实型数据及其表示字符型数据及其表示小结,35,本节概要,字符型变量定义形式:char a;存储空间:一个变量一个字节,字符型数据及其表示,36,字符型数据以ASCII码存储(1字节)ASCII(American Standard Code for Information Interchange)美国信息交换标准代码例:字符A的ASCII码值用十进制数表示是65,用二进制数表示是1000001,在计算机中的存储为:,字符型数据及其表示,37,0 1 0 0 0 0 0 1,字符A的存储形式实际上就是一个整型数65可以直接与整型数据进行算术运算、混合运算,与整型变量相互赋值也可以将字符型数据以字符或整数两种形式输出以字符形式输出时,输出ASCII码值对应的字printf(“%c”,65);符以整数形式输出时,直接将ASCII码值输出printf(“%d”,c);在ASCII范围以内,整型数据与字符型数据可以通用,字符型数据及其表示,38,字符型常量用单引号包含的一个字符是字符型常量。只能包含一个字符例正确:A,a,1错误:abc,“A”,字符型数据及其表示,39,字符型常量转义字符:是特殊性质的字符常量,用于表示常用的但却难以用一般形式表示的不可显示字符;转义字符的表示:用一个转义标识符“”开头,后面是需要的转义字符。常用的转义字符序列的字符常量见表:,字符型数据及其表示,40,字符型数据及其表示,41,转义字符表:转义字符 功 能 n换行t制表符 b退格 r回车反斜线字符 单引号字符“双引号字符 ddd1至3位八进制数表示的字符 xdd1至2位十六进制数表示的字符,转义符“”表示将其后的字符原来的含义进行转换,变成某种另外特殊约定的含义。,转义字符“n”中的n已不代表字符常量“n”,n转义成换行。转义字符“015”是“ddd”形式的转义字符,其中“015”是八进制字符串,它表示了ASCII码表中编码为十进制13的字符,也就是回车。转义字符“x1f”是“xdd”形式的转义字符,其中“1f”是十六进制字符串,它表示了ASCII码表中编码为十进制31的字符,也就是。,字符型数据及其表示,42,main()char a,b,c;int d;a=005;b=060;c=A;d=1089;/*提示:1089=0 x0441*/printf(a=%c b=%c c=%c d=%cn,a,b,c,d);printf(a=%d b=%d c=%d d=%dn,a,b,c,d);,字符型数据及其表示,43,0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1,d,0 0 1 1 0 0 0 0,b,0 0 0 0 0 1 0 1,a,内存,例:计算字符A与整型数据25的和main()char a;/*说明a为字符型变量*/int b;/*说明b为整型变量*/a=A;/*为a赋字符常量A*/b=a+25;/*计算65+25并赋值给字符变量b*/printf(”%c,%d,%c,%dn”,a,a,b,b);/*以字符型和整型两种格式输出a、b*/程序运行的输出结果:A,65,Z,90,字符型数据及其表示,44,数据与数据类型常量与变量整型数据及其表示实型(浮点型)数据及其表示字符型数据及其表示小结,45,本节概要,46,C语言中的数据类型 整数型 int 基本类型 实数型 float,double 字符型 char 指针类型数据类型 数组型 构造类型 结构型 struct 联合型 union 空类型 void,数据的存储数据的操作,程序,小结,47,小结,常量,字符常量,数值常量,计算机语言表示数据的基本形式,实型常量,整型常量,字符常量,字符串常量,变量,字符变量,数值变量,实型变量,整型变量,指针变量,整型,实型,字符型,符号常量define:编译前 替换变量标识一块内存空间先定义,再赋值,再使用三种基本数据类型名称、存放的长度、表示数的范围变量声明格式常量的表示方法使用中的注意事项重点和难点数据的表示范围实型数据的有效数字转义字符的概念,小结,48,结束,49,