《数据类型上》PPT课件.ppt
第2章 C语言基本数据类型、运算符和表达式,本讲要点,计算机中数据的表示C语言程序中的数据及常量类型C语言基本语法单位变量和C语言基本数据类型 对应教材的第2章内容,程序中的数据,计算机科学家沃思(Nikiklaus Wirth)提出的公式:程序=数据结构+算法 即程序构成为:数据及对数据的处理方法;程序=算法+数据结构+程序设计方法、工具和环境类比:菜(程序)=菜原料(数据)+做菜方法(算法)+工具,Example2.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);,2.1数据在计算机中的表示-基本概念,进制:生活中的10进制,60进制,12进制;计算机中采用2进制,16进制和8进制。例如:(123.23)10,(111.001)2位权:一个数字符号处在数据中位置所代表的值 例如:324.12=3*102+2*101+4*10+1*10-1+2*10-2 提问:101101.101=?,2.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=?,2.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=?,2.1数据在计算机中的表示-16进制和8进制,16进制(参考P26)表示符号:09、A、B、C、D、E、F;转换:自右往左,4位分节,例如例如:101,1101,0111=(?)168进制(参考P28)表示符号:07转换:自右往左,3位分节,例如:10,111,010,111=(?)8,2.1数据在计算机中的表示-字长和整数表示,字长:CPU一次能处理的2进制数据的长度,与CPU的硬件有关整数分为:有符号数和无符号数无符号整数:字长的所有位表示数值,例如:8位字长表示范围:0255;即:0000000011111111提问:16位范围是多少?有符号整数:字长的最高位是符号位,剩下是数值位。8位字长表示范围:-127127 即:1111111101111111提问:16位无符号和有符号整数范围是多少?,2.2 程序中的数据-数据类型,数据定义:自然界中一切物理信号的符号表示数据分类:常量和变量数值和非数值数据数据类型:整型、实型、字符型等(不同语言中的类型不同)存储类型;C语言中的存储据类型(动态存储和静态存储),2.2 程序中的数据-C语言数据类型,图2.1 C的数据类型,常量:在程序执行过程中其值保持不变的量称为常量常量类型:数值常量和符号常量数值常量:整型常量,实型常量,字符型常量,例如:18,3.14,A符号常量是用符号名来表示常量,符号名一般用大写形式符号常量在C中的定义方法:#define 例如:#define PI 3.14159#define N 100#define NAME“zhang san”,2.2 程序中的数据-常量和变量(参考P38),2.2 程序中的数据-整型常量表示,整型常量:用十进制数、八进制数和十六进制数三种形式表示C语言规定:八进制整数以数字“0”开头的数字序列,如0733,0732;十六进制整数以0 x开头的数字序列,如0 xffff,0 x1111,0 x38十进制整数如:123,-369,78,168L提问:123=0123=0 x123对吗?,例2.2#define PRICE 30main()int num,average,total;num=10;total=num*PRICE;average=PRICE/num;printf(total=%d,%d,total,average);,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有关实数的存储内容,2.2 程序中的数据-字符常量的表示(参考42),单撇号表示法:用一对单撇号括起来的一个字符,如a、c、A、?等单撇号中的单个字符,但不能是单撇号或反斜杠:即、都是不合法的用转义字符表示法:b、367、x6d问题提出:101 和A是同一字符?,转义字符表示法:,字符常量表示,表2.1转义字符表,利用ddd xhh转义字符,可以表示任何ASCII码字符,2.2 程序中的数据-字符串常量的表示,字符串常量:用双撇号括起来的零个或多个字符序列,如:“zhang san”、“student”,“x”,”hello”等,字符串总的字符数称为字符串的长度系统在每一个字符串的末尾都自动加一个“字符串结束标志”,即0问题提出:“x”和x在内存中表示相同吗?,2.3 C语言的基本语法单位,标识符概念:是指用来表示变量名、符号常量名、函数名、数组名、文件名的字符序列。C语言中各种名称都是由标识符来表示的。标识符必须满足以下规律:1、第一个字符必须是字母或下划线。2、其它部分必须由字母、下划线或数字组成。3、大小写字母表示不同意义。4、一般系统能识别的标识符最大长度是32位。5、标识符不能使用C中的关键字。简言之,标识符是以字母或下划线打头的,后随字母或下划线或数字组成的字母下划线数字串。,2.3 C语言的基本语法单位,C语言中的关键字(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语言中的编译预处理命令(12个):define endif elif error line include ifdef ifndef program undef if else,2.4 变量-内涵和定义格式,变量:在程序运行过程中不断改变的量称为变量。变量用变量名,即标识符来表示,在C语言中要求对所有的变量“先定义,后使用”一个变量代表内存中的一定大小的存储单元变量定义的一般格式是:;例如:int sum,x1,x2;float score_1;,2.4 变量:变量在内存的表示,内存拓扑结构图,数据,内存的概念:微型计算机的内存地址用16进制编码表示;存储单元为字节:一个字节由8位二进制码组成;存储单元包括两个概念:存储地址(或名称)和存储数据(存储内容)Ex:char;int b;b=6;,47F87,.,a,b,47F94,47F95,6,00000000,00000110,2.4 变量-变量在内存的表示,内存的特点:当一个数据存入内存单元中,只要没有新的数据存入,该内存单元总是保存这个数据,有“取之不尽”之意。当一个新数据存入该内存单元中,则该内存单元内容将被新数据取代,并且,不再记录该单元曾经存储的数据。内存的记忆力需要电来维持,没有电能就没有记忆力,整型变量,分为四种类型:(1)基本型,以int表示(2)短整型,以short int或者short表示(3)长整型,以long int或者long表示(4)无符号型,以unsigned int(无符号整 型)、unsigned short(无符号长整型)和unsigned long(无符号短整型)表示,2.4 变量-C语言整型变量(参考P43),整型变量定义 如 int a,b;long c,d,f;unsigned e;变量的初始化:在变量定义时预先设置初值 如 int a3;int x,y,z3;int i3,j3,k3;提问:#define N 100和 int a3的区别?,C语言标准没有规定整型变量在计算机内存中所占的字节数,它与具体的机器、操作系统和编译系统有关,main()int a,b,c,d;/*指定变量a、b、c、d为整型*/unsigned u;/*指定变量u为无符号整型*/a=12;b=-24;u=10;c=a+u;d=b+u;printf(a+u=%d,b+u=%dn,c,d);程序运行显示:a+u=22,b+u=-14,#include”stdio.h”main()int x;unsigned y;long z;x=65535;y=65535;z=65535;printf(“x=%dn,y=%un,z=%ldn”,x,y,z);printf(“x=%ld”,x);,结果为:x=-1y=65535z=65535x=建议:P45 例2-20不必看,实型变量:分为单精度(float)双精度(double)两种类型单精度占内存4个字节。双精度占内存8个字节 其中:float型变量只能接受7位有效数字 double型变量只能接受15位有效数字,2.4 变量-实型变量(参考P48),实型变量定义:float x;double y,z;变量的初始化:float x3.24,x1=1.25e-5;double y2.56;,2.4 变量-实型变量(参考P48),2.4 变量-字符变量(参考P48),字符变量:在内存中占一个字节,只能存放一个字符字符在内存中以ASCII码形式存放 例如:字符A在内存中存放的是65 字符f在内存中存放的是102字符变量定义 char x1,x2;字符变量初始化 char ch1x;char ch2y;提问:ch1=“x”对吗?,字符数据在内存中的存储形式,main()char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(%c%c,c1,c2);,课堂练习,2.1编写一个程序,将输入的数字字符转换 为相应的数字输出2.2输入三个浮点数,找出其中的最大值2.3输入一个字符,输出该字符的字符码,该字符的前导字符(码减少1)及字符的后续字符(字符码增加1)及字符码,题2.1参考答案(错误),includemain()char c;int d;printf(“输入一个数字字符:”);scanf(“%d”,c);d=c-0;printf(“对应的数字为%c:nn”,d);请指出错误,题2.1参考答案(正确),#includemain()char c;int d;printf(“输入一个数字字符:”);scanf(“%c”,题2.2参考答案,#include main(void)float a,b,c,m;printf(input three numbers:);scanf(%f%f%f,题2.3 参考答案,includemain(void)int c,c1,c2;printf(input a character:);c=getchar();c1=c-1;c2=c+1;printf(The value of%c is%4dn,c,c);printf(%c:%d-%c:%d-%c:%dn,c1,c1,c,c2,c2);,本讲重点小结,数的2、8、16进制转换常量的表示,特别是符号常量表示变量内涵和外延;各种变量定义方法.作业见教学大纲.另外,教材的2.1节可以不作重点看,下讲内容,运算符C表达式与宏定义参考教材的第2章,P65-84,希望大家做好预习祝大家好胃口,