第2章数据类型上.ppt
1第第2章章 C语言基本数据类型、语言基本数据类型、运算符和表达式运算符和表达式2本讲要点本讲要点v 计算机中数据的表示计算机中数据的表示v C C语言语言程序中的数据及常量类型程序中的数据及常量类型v C C语言基本语法单位语言基本语法单位v 变量和变量和C C语言基本数据类型语言基本数据类型 对应教材的第对应教材的第2 2章内容章内容 3程序中的数据计算机科学家沃思(Nikiklaus Wirth)提出的公式:程序=数据结构+算法 即程序构成为:数据及对数据的处理方法;程序=算法+数据结构+程序设计方法、工具和环境类比:菜(程序)=菜原料(数据)+做菜方法(算法)+工具 4菜谱名称 香辣虾所属菜系 川菜所属类型 中厨靓菜基本特点 此菜酱香味浓,鲜香微辣,虾肉软嫩可口。基本材料 活虾(1斤2两左右)土豆、冬笋、西芹、大葱调料:蟹酱、蟹油、味精、鸡精、白糖、干辣椒制作过程:第一步:大碗1支,簸箕1个,小碟2个;把土豆去皮切块儿,放入大碗中,冬笋切块,放入簸箕,西芹切条,放入小碟,大葱切段儿,少许放小碟。第二步:把活虾要清洗干净,然后在每一只虾的背上开一刀,以便后期制作入味儿。第三步:支炒锅,下适量蟹油,然后加入少许干辣椒段儿,翻炒两下,把虾和土豆块、冬笋块、西芹条、大葱段一起放入锅内,来回翻炒。第四步:待炒上几番以后,配料差不多熟了,下蟹酱,然后下少许味精、鸡精、白糖,继续翻炒。第五步:炒至虾身卷曲,颜色变成橙红色,即虾已断生,即可出锅5Example2.1/*the program is used to calculate var j and print I,f,a,j*/Main()int i=3,j;char a=a;double f=4.56;j=i+5;printf(i=%d,f=%f,a=%c,%dn,i,f,a,j);62.1数据在计算机中的表示-基本概念l进制:生活中的10进制,60进制,12进制;计算机中采用2进制,16进制和8进制。例如:(123.23)10,(111.001)2l位权:一个数字符号处在数据中位置所代表的值 例如:324.12=3*102+2*101+4*10+1*10-1+2*10-2 提问:101101.101=?72.1数据在计算机中的表示-基本概念101101.101=1*25+0*24+1*23+1*22+0*21+1*20+1*2-1+0*2-2+1*2-3=32+8+4+1+0.5+0.125=(45.625)10提问:10进制整数如何转换2进制?(除2取余)10进制小数如何转换为2进制?(乘2取整)(参考P21-23)例如:87=?0.135=?87.135=?82.1数据在计算机中的表示-运算算术运算提问:1001+001=?1001-001=?1011*101=?1011/101=?逻辑位运算(参考P25)位或:0V0=0;0V1=1V0=1V1=1位与:11=1;10=0 1=0 0=0位反:1=0;0=1异或:00=0,11=0;01=1,10=1提问:110011 100101=?92.1数据在计算机中的表示-16进制和8进制16进制(参考P26)表示符号:09、A、B、C、D、E、F;转换:自右往左,4位分节,例如例如:101,1101,0111=(?)168进制(参考P28)表示符号:07转换:自右往左,3位分节,例如:10,111,010,111=(?)8102.1数据在计算机中的表示-字长和整数表示字长:字长:CPUCPU一次能处理的一次能处理的2 2进制数据的长度,与进制数据的长度,与CPUCPU的硬件有的硬件有关关整数分为:有符号数和无符号数整数分为:有符号数和无符号数无符号整数:字长的所有位表示数值,例如:无符号整数:字长的所有位表示数值,例如:8 8位字长表示位字长表示范围:范围:02550255;即:;即:00000000111111110000000011111111提问:提问:1616位范围是多少?位范围是多少?有符号整数:字长的最高位是符号位,剩下是数值位。有符号整数:字长的最高位是符号位,剩下是数值位。8 8位字长表示范围:位字长表示范围:-127127-127127 即:即:11111111011111111111111101111111提问:提问:1616位无符号和有符号整数范围是多少位无符号和有符号整数范围是多少?112.2 程序中的数据-数据类型数据定义:自然界中一切物理信号的符号表示数据定义:自然界中一切物理信号的符号表示数据分类:数据分类:常量和变量常量和变量数值和非数值数据数值和非数值数据数据类型:整型、实型、字符型等(不同语言中的类数据类型:整型、实型、字符型等(不同语言中的类型不同)型不同)存储类型;存储类型;C C语言中的存储据类型语言中的存储据类型(动态存储和静态存动态存储和静态存储储)122.2 程序中的数据-C语言数据类型语言数据类型基本类型构造类型指针类型空类型整型 字符型实型 枚举类型(浮点型)单精度型 双精度型数组类型 结构体类型 共用体类型数据类型图2.1 C的数据类型13常量:在程序执行过程中其值保持不变的量称为常量常量:在程序执行过程中其值保持不变的量称为常量常量类型常量类型:数值常量和符号常量数值常量和符号常量数值常量:整型常量数值常量:整型常量,实型常量实型常量,字符型常量字符型常量,例如例如:18,3.14,A:18,3.14,A符号常量是用符号名来表示常量,符号名一般用大写形式符号常量是用符号名来表示常量,符号名一般用大写形式符号常量在符号常量在C C中的定义方法:中的定义方法:#define#define 例如:例如:#define PI 3.14159#define PI 3.14159#define N 100#define N 100#define NAME “zhang san”#define NAME “zhang san”2.2 程序中的数据-常量和变量(参考常量和变量(参考P38)142.2 程序中的数据-整型常量表示整型常量表示整型常量:用十进制数、八进制数和十六进制数整型常量:用十进制数、八进制数和十六进制数三种形式表示三种形式表示C C语言规定:语言规定:八进制整数以数字八进制整数以数字“0”开头的数字序列,如开头的数字序列,如0733,0732;十六进制整数以十六进制整数以0 x开头的数字序列,如开头的数字序列,如0 xffff,0 x1111,0 x38十进制整数如:十进制整数如:123,-369,78,168L提问:提问:123=0123=0 x123对吗?对吗?15例2.2#define PRICE 30main()int num,average,total;num=10;total=num*PRICE;average=PRICE/num;printf(total=%d,%d,total,average);16 2.2 程序中的数据-实型常量的表示实型常量的表示实型实型常量:有小数和指数两种表示格式常量:有小数和指数两种表示格式 日常数据:日常数据:32.5,0.00325,325.0小数表示:小数表示:32.50.00325 325.0指数表示:指数表示:3.25e13.25e-3 3.25e2 32.5e032.5e-4 0.325e3 注:指数书写时,注:指数书写时,e(或者(或者E)前必须有数字,)前必须有数字,e后的指数必须为整数后的指数必须为整数P42例题例题2-19说明实数的精度问题说明实数的精度问题建议不必看建议不必看P41-42有关实数的存储内容有关实数的存储内容172.2 程序中的数据-字符常量的表示字符常量的表示(参考参考42)42)单撇号表示法:用一对单撇号表示法:用一对单单撇号括起来的一撇号括起来的一个字符,如个字符,如a、c、A、?等等单撇号中的单个字符,但不能是单撇号或单撇号中的单个字符,但不能是单撇号或反斜杠:即反斜杠:即、都是不合法的都是不合法的用转义字符表示法:用转义字符表示法:b、367、x6d问题提出:问题提出:101 和和A是同一字符是同一字符?18转义字符表示法:转义字符表示法:字符常量表示字符常量表示字符形式ntbvr字符形式fdddxhh含义换行横向跳格(跳到下一个输出区域)竖向跳格退格回车含义走纸换行反斜杠字符单引号1至3位八进制数所代表的字符1至2位十六进制数所代表的字符表表2.12.1 转义字符表转义字符表利用ddd xhh转义字符,可以表示任何ASCII码字符192.2 程序中的数据-字符串常量的表示字符串常量的表示字符串常量字符串常量:用双撇号括起来的零个或多个字用双撇号括起来的零个或多个字符序列符序列,如如:“zhang san”、“student”,“x”,”hello”等,字符串总的字符数称为字符串的等,字符串总的字符数称为字符串的长度长度系统在每一个字符串的末尾都自动加一个系统在每一个字符串的末尾都自动加一个“字字符串结束标志符串结束标志”,即,即0问题提出:问题提出:“x”和和x在内存中表示相同吗?在内存中表示相同吗?202.3 C C语言的基本语法单位语言的基本语法单位标识符概念标识符概念:是指用来表示变量名、符号常量名、函数名、数组名、文件名的字符序列。C语言中各种名称都是由标识符来表示的。标识符必须满足以下规律:标识符必须满足以下规律:1、第一个字符必须是字母或下划线。2、其它部分必须由字母、下划线或数字组成。3、大小写字母表示不同意义。4、一般系统能识别的标识符最大长度是32位。5、标识符不能使用C中的关键字。简言之,标识符是以字母或下划线打头的,后随字母或下划线或数字组成的字母下划线数字串。212.3 2.3 C C语言的基本语法单位语言的基本语法单位C C语言中的关键字语言中的关键字(32(32个个):):auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatie while C C语言中的编译预处理命令语言中的编译预处理命令(12(12个个):):define endif elif error line include ifdef ifndef program undef if else 222.4 2.4 变量变量-内涵和定义格式内涵和定义格式变量:变量:在程序运行过程中不断改变的量称为变量。变量用变量名,即标识符来表示,在C语言中要求对所有的变量“先定义,后使用”一个变量代表内存中的一定大小的存储单元一个变量代表内存中的一定大小的存储单元变量定义的一般格式是:变量定义的一般格式是:;例如:int sum,x1,x2;float score_1;23 2.4 2.4 变量变量:变量在内存的表示变量在内存的表示内存拓扑结构图数据地址内存的概念:内存的概念:微型计算机的内存地址用微型计算机的内存地址用16进制编码表示;进制编码表示;存储单元为字节存储单元为字节:一个字节由一个字节由8位二进制码组成位二进制码组成;存储单元包括两个概念:存储单元包括两个概念:存储地址(或名称)和存储数据存储地址(或名称)和存储数据(存存储内容)储内容)Ex:char;int b;b=6;47F87.ab47F9447F9560000000000000110242.4 2.4 变量变量-变量在内存的表示变量在内存的表示内存的特点:内存的特点:当一个数据存入内存单元中,只要没有新的数当一个数据存入内存单元中,只要没有新的数据存入,该内存单元总是保存这个数据,有据存入,该内存单元总是保存这个数据,有“取之不尽取之不尽”之意。之意。当一个新数据存入该内存单元中,则该内存单当一个新数