第02章基本数据类型.ppt
《第02章基本数据类型.ppt》由会员分享,可在线阅读,更多相关《第02章基本数据类型.ppt(123页珍藏版)》请在三一办公上搜索。
1、1,第2章 基本数据类型、运算符和表达式本章要点,掌握c语言中的数据类型掌握常用的表达式形式,以及运算符的优先级和结合性。X+y/3 X=Y=3,成绩、工资、平均体重、价格,类型?,范围?,精度?,内存结构?,运算?,2,第2章 基本数据类型、运算符和表达式,2.1变量和常量,22 基本数据类型,23 整型,24 实型,25 字符型,26 运算符和表达式,27 基本的输入输出函数,28总结与提高,3,2.1变量和常量变量,数学中的变量是指其值可以变化的量,程序中的变量是指可多次赋值的量。变量有三个要素,变量类型、变量名和变量地址。,例2-1 变量的使用main()int x,y,sum;pri
2、ntf(“nplease input two integers:);scanf(%d%d,/*将和输出*/,4,2.1变量和常量变量,不同的数据类型,其占用的内存空间一般不一样,存储格式也可能不一样,表示范围和精度都有区别。在Turbo c中,命名变量的规则如下:-必须以字母或下划线开头,后面可以是字母、数字或下划线;-ANSI C标准没有规定变量名的长度(字符个数),但各个c编译系统都有自己的规定。为了程序具有较好的可移植性和阅读程序的方便,变量名一般不要超过16个字符;-变量名区分大小写,如变量名abc与变量名ABC是不同的变量;-变量名不能使用系统的关键字(或称保留字),5,2.1变量和
3、常量变量,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、volatile、while。,6,2.1变量和常量变量,例如:下列是合法的变量名:下列是不合法的变量名:,SUM,_total,_ch1,employee_name,p_1,M.D.John
4、,$876,3D67,ab,int,7,2.1变量和常量常量,相对变量的概念就是常量,也称为常数。在程序运行过程中,其值不能被改变的量称为常量。具体来说有两类:,普通常量,符号常量,3,7.56,a,”I love beijing”,#difine PI 3.14,8,2.1变量和常量常量,例2-2 符号常量的例子#define PI 3.14main()float r,area;printf(“nPlease input the radius:);scanf(%f,/*输出该圆的面积*/,9,2.1变量和常量常量,问题:使用符号常量有什么好处?,10,22 基本数据类型,C语言数据类型,11
5、,23 整型整型常量,在语言中,使用的整型常量有十进制、八进制和十六进制三种,用不同的前缀来标识不同进制的整型常量,用不同的后缀来标识不同类型的整型常量。(1)十进制整常量:其各位数为09,但最高位不能为0(除了0这个数字外)。例如,22,0,-56等是合法的十进制整常数;而01、726C不是十进制整常数。(2)八进制整常量:八进制整常量必须以数字0开头,即以0作为八进制数的前缀。各位数取值为07。,12,23 整型整型常量,以下各数是合法的八进制数:-01(十进制为1)、0101(十进制为65)、0177777(十进制为65535);以下各数不是八进制数(Why):-25、07C2。(3)十
6、六进制整常量:十六进制整常量的前缀为0X或0 x。十六进制需要十六个字符来表示各位可能出现的数符,这些字符规定为09,AF或af。,13,23 整型整型常量,以下各数是合法的十六进制整常量:-0X4B(十进制为75)、0X10(十进制为16)、0XFFFF(十进制为65535);以下各数不是十六进制整常量:-5A(无前缀0X)、0X5H(含有非十六进制数码)。,14,23 整型整型常量,(4)整型常量的后缀:在16位字长的机器上,基本整型的长度为16位,因此表示的数的范围也是有限定的。注意:八进制整型常量和十六进制整型常量都只能表示正整数,因此16位取值范围是0+65535,而十进制整型常量可
7、以是负数,取值范围为-32768+32767。如果使用的数超过了上述范围,则要用相应的后缀来标明。,15,23 整型整型常量,超范围的数用长整型数来表示(关于整型数据类型,参考本章2.3.2节)。长整型数是用后缀“L”或“l”来表示的。例如:十进制长整型常数:例如32L(十进制为32)、1234567L(十进制为1234567);八进制长整型常数:例如040L(十进制为32)、0300000L(十进制为98304);十六进制长整型常数:例如0X20L(十进制为32)、0XFFFFL(十进制为65535)。注意:整数32L和基本整常数32在数值上并无区别但是在内存中,32L占用4个字节空间,而3
8、2只占用2个字节的空间,因此是不相同的。,16,23 整型整型常量,如果要表示一个无符号数,整型常数的后缀为“U”或“u”。例如:-358u,0 x38Au,235Lu均为无符号数。前缀和后缀可同时使用以表示各种类型的数。如0XB7CLu表示十六进制无符号长整数B7C,其十进制数为2940。,23 整型整型常量,17,23 整型整型常量,例2-3各进制整数的输出。main()int i;i=167;printf(ni=167);printf(nThe decimal form is%d,i);/*以十进制格式显示*/printf(nthe octonary form is%o,i);/*以八进
9、制格式显示*/printf(nthe hexadecimal form is%x,i);/*以十六进制格式显示*/i=0167;,18,23 整型整型常量,printf(ni=0167);printf(nThe decimal form is%d,i);printf(nthe octonary form is%o,i);printf(nthe hexadecimal form is%x,i);i=0 x167;printf(ni=0 x167);printf(nThe decimal form is%d,i);printf(nthe octonary form is%o,i);printf(n
10、the hexadecimal form is%x,i);,19,23 整型整型常量,运行该程序后,其结果为:,i=167The decimal form is 167The octonary form is 247The hexadecimal form is a7i=0167The decimal form is 119The octonary form is 167The hexadecimal form is 77i=0 x167the decimal form is 359the octonary form is 547the hexadecimal form is 167,20,2
11、3 整型整型变量,整型变量分类。短整型基本整型长整型。在16位字长的机器中,基本整型变量占2个字节。,有无符号位,有符号整型,无符号整型,有无符号位,短整型,长整型,基本整型,2*3=6类,21,23 整型整型变量,1整数的机内表示,如果声明一个整型变量:int i;i=876;因为876292826252322,所以在机内二进制的表示形式如图2-2所示(共占16位):图22 876在内存中的表示,22,23 整型整型变量,无符号整型将所有的位均表示为数据,因此只有正数形式。有符号的整型将最高位用做符号位,最高位为“1”表示负数,为“0”表示正数。,数据在内存中是以二进制形式存放的。实际上,数
12、值是以补码表示的。(1)对于正数,原码=反码=补码。(2)对于负数,补码=反码+1。(3)引入补码后,使减法统一为加法。,计算正数的补码,口诀:原码=反码=补码,计算负数的补码,int型-10;绝对值:10,反 码,补 码,请写出20、-20的补码,补 码,27,23 整型整型变量,2整型变量的类型,28,23 整型整型变量,3整型变量的声明和赋值 声明变量的格式为:变量类型 变量名;下面是声明整型变量的例子:short int x;声明了一个短整型的变量x。而 unsigned int 则声明了一个无符号的基本整型变量。,29,23 整型整型变量,声明变量的时候要注意三点:,(1)允许一行声
13、明多个同类型变量,各变量名间用“,”(逗号)隔开;(2)变量必须先声明,然后才能使用;(3)在一个语句块中,程序中所有的变量应当一 起声明在开始处,不能重复声明。,30,23 整型整型变量,例2-4整型变量的运用main()int a,b,c,d;/*在程序段开始处一起声明变量*/unsigned u;a=12;b=-24;u=10;/*用常量为变量赋值*/c=a+u;d=b+u;/*用一个表达式为变量赋值*/printf(na+u=%d,b+u=%d,c,d);,31,23 整型整型变量,例2-5一个不正确的例子main()int x,y;y=x;printf(ny=%d,y);,我错在那?
14、呜呜呜,32,23 整型整型变量,给整型变量赋值有很多方式,(1)声明时立即赋值,称为初始化。例如:int x=3;int y=4,z=5;(2)先声明后赋值。int x;x=3;(3)通过格式化函数scanf从标准输入设备输入。int x;scanf(“%d”,33,23 整型整型变量,4整型值的输出。,也可以将整型常量或变量的值以十进制、八进制或十六进制的格式输出,例23说明了这一点。重要提示:数学上的整数可以无限大,但程序设计中整数在机内存储所占的内存有限,因此整型数据表示的范围有限,在平时的编程中,要特别注意不能把一个超过范围的数值赋值给一个整型变量。如果这样做了,那么这个整型变量事实
15、上接受的不是预想中的值,称为“溢出”。,34,23 整型整型变量,例2-6整型数据的溢出。main()int a,b;a=32767;b=a+1;printf(%d,%dn,a,b);运行后,其结果为:32767,-32768,35,23 整型整型变量,为什么会出错?,a=32767:图25 整数溢出,+1,-32768,36,24 实型实型常量,在C语言中,实数只采用十进制。基本的形式为:整数部分.小数部分但有两种表达方式:(1)小数方式:由09和小数点组成。例如:035,167,6736,728.3 等。(2)指数方式:由十进制实数,加阶码标志“e”或“E”以及阶码(只能为整常量,可以带符
16、号)组成。其一般形式为:aEn或aen(a为十进制数,n为十进制整数表示的阶码)其值为a10n。,37,24 实型实型常量,实型常量的例子使用实型常量要注意以下几点:(1)整数部分和小数部分可以省略其中的一个,例如,.36和200.都是合法的实型常量。(2)用指数方式时,E或e两边都要有数字,但都只能是常量。(3)实型分为单精度实型和双精度实型,但是实型常数不分单、双精度,都按双精度double型处理。,036e2,表示0.36102;12.56E12,表示12.561012;3.89e3,表示3.89103。,38,24 实型实型变量,1实型数据的机内表示 实型数据一般占4个字节(32位)内
17、存空间,按指数形式存储。比如实数3.14159在内存中的存放形式:,数符,小数部分,阶符,阶数,小数部分占的位数愈多,数的有效数字愈多,精度愈高。指数部分占的位数愈多,则能表示的数值范围愈大。,39,24 实型实型变量,2实型变量的类型,40,24 实型实型变量,3实型变量的声明和赋值,实型变量定义的格式和书写规则与整型相同。例如:float x,y;(x,y为单精度实型量)double a,b,c;(a,b,c为双精度实型量),41,24 实型实型变量,实型变量赋值方式与整型变量类似,但是要注意的是从键盘输入时scanf()函数的类型说明符为“%f”:float x;x=scanf(“%f”
18、,从键盘输入实数时可以用小数的形式或指数的形式输入。,42,24 实型实型变量,4实型值的输出 若用printf()函数输出,格式输出符是“%f”,细节请参看本章2.7节。,43,24 实型实型变量,5实型数据的舍入误差,例2-7 实型数据的舍入误差。main()float a,b;a=123456.789e5;b=a+20;printf(na=%f,b=%f,a,b);该程序的运行结果是:a=12345678848.000000,b=12345678848.000000,44,25 字符型字符常量,字符常量是用单引号括起来的单个字符或转义字符。例如:a、c、=、+、?都是合法字符常量。注意,
19、a和A是不同的字符常量。在语言中,字符常量有以下特点:(1)字符常量只能用单引号括起来,不能用双引号或其它括号。(2)字符常量只能是单个字符,不能是字符串。(3)有些字符有特殊含义,如单引号“”、双引号“”等,还有一些字符不能或不方便直接从键盘输入,比如回车换行符、退格符等。这时可使用转义字符来表示。,45,25 字符型字符常量,46,25 字符型字符常量,广义地讲,语言字符集中的任何一个字符均可用转义字符来表示。表中的ddd和xhh正是为此而提出的。ddd和hh分别为八进制和十六进制的ASCII代码(ASCII表见附录1)。如101(十进制为65)表示字母A,012(十进制为10)代表换行,
20、376代表图形字符“”,XOA表示换行等。特别注意0或000是代表ASCII码为0的控制字符,即“空操作”。要注意的是,015表示回车,不换行,使得输出的当前位置移到本行开头,而n表示回车换行,使得输出的当前位置跳到了下一行的行首。,47,25 字符型字符常量,例2-8 转义字符的使用。main()printf(ab ct derf012);printf(hi 101x61);运行后其结果如下(表示空格,本章其它地方出现这个符号,不作特别说明的话也代表空格):fabcdehi”Aa,48,25 字符型字符变量,1字符数据的机内表示,每个字符变量被分配一个字节的内存空间,因此只能存放一个字符。字
21、符值是以ASCII码的形式存放在变量的内存单元之中。如x的十进制ASCII码是120,y的十进制ASCII码是121。对字符变量a,b赋予x和y值:a=x;b=y;实际上是在a,b两个单元内存放120和121的二进制代码,如图2-7所示:a:b:,字符ASCII码表,5 p$,有效的字符型值,2,2,正确,2+2=4,X,50,25 字符型字符变量,例2-9 把整数赋给字符变量。main()char a,b;a=x;/*将字符常量赋值给字符变量*/b=120;/*将整型常量赋值给字符变量*/printf(%c,%dn,a,a);printf(%c,%dn,b,b);运行后其结果是:x,120
22、x,120,51,25 字符型字符变量,例2-10大小写转换main()char a,b;a=a;b=B;printf(n%c,%dn%c,%d,a,a,b,b);a=a-32;b=b+32;printf(n%c,%dn%c,%d,a,a,b,b);,52,25 字符型字符变量,运行后,其结果是:a,97B,66A,65b,98,53,25 字符型字符变量,2字符变量的声明和赋值,字符变量的声明格式为:char 变量名;例如:char x,y;该语句声明了两个字符变量x和y。字符变量声明后就可以赋值,对于声明的变量x可以这样赋值:x=x;注意,在该语句中,左边的x是变量,而右边的x是字符常量。
23、,54,25 字符型字符变量,字符变量也可用转义字符赋值:x=b;该语句将退格符赋值给了x。也可以从标准输入设备输入字符给字符变量,如:scanf(“%c”,&x)。因为scanf函数可以指定输入数据的类型,也称做格式化输入函数。,55,25 字符型字符串常量,在C语言中,没有为字符串定义变量类型,也就是说,没有字符串变量这个概念。但是有字符串常量的概念。日常生活中的人名、书名等,都要用字符串来描述。字符串可以存储在后面将要学到的数组或指针类型变量中。字符串常量是由一对双引号括起的字符序列。例如:“CHINA”,“C program”,“$12.5”等都是合法的字符串常量。如果要将双引号“”作
24、为字符串的一部分,那么就需要使用转义字符。例如:“the number”5”,该字符串就是平时理解的the number“5”。,56,25 字符型字符串常量,字符串常量和字符常量是不同的量。它们之间主要有以下区别:(1)从书写格式上看,字符常量由单引号括起来,字符串常量由双引号括起来。(2)从形式上看,字符常量只能是单个字符,字符串常量则可以含一个或多个字符。(3)从赋值方式上看,可以把一个字符常量赋值给一个字符变量,但不能把一个字符串常量赋值一个字符变量。在语言中没有相应的字符串变量,但是可以用一个字符数组或字符指针变量来存放一个字符串常量。在数组一章内予以介绍。,57,25 字符型字符串
25、常量,(4)从内存格式上看,字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符“0”(ASCII码为0)。这是字符串结束的标志。,例如:字符串“C program”在内存中所占的字节为如图2-8所示。,58,25 字符型字符串常量,字符常量a和字符串常量“a”虽然都只有一个字符,但在内存中的情况是不同的。思考:语句“printf(“I like 0 c”)”执行的结果是什么?答案:I like,59,26 运算符和表达式运算符简介,算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(+)、自
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 02 基本 数据类型
链接地址:https://www.31ppt.com/p-5886204.html