欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    Lesson-2数据类型.ppt

    • 资源ID:2202074       资源大小:320.51KB        全文页数:32页
    • 资源格式: PPT        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Lesson-2数据类型.ppt

    C语言程序设计 第二章 数据类型,众嵌科技,知识要点,2.1 C语言的数据类型 2.2 常量与变量 2.3 整型数据 2.4 实型数据 2.5 字符数据 2.6 变量的定义与赋值 2.7 C语言类型修饰符 2.8 数据类型转换,§2.1 C语言的数据类型,什么是数据类型? 就像对自然界中的动物,为了对它们进行区分,在动物学上我们把狗、狼归为犬科动物,猫、虎、豹归为猫科动物一样,为了区分不同类型的数据,在计算机领域也有一套标准来区分各种数据,用这种区分方法得到的数据类别就是数据类型。例如:我们可以把带小数的数归为一类(0.2、8.7、1.12、-3.22),称为小数类型;把不带小数的数又归为一类( 1、2、3、-5、0 ),称为整数类型;那么小数类型和整数类型都被称为数据类型。,§2.1 C语言的数据类型,C语言数据类型的分类,基本类型,整 型,实 型,字符型,枚举类型,构造类型,数组类型,结构体类型,共用体类型,指针类型,空类型,C语言数据类型,§2.2 常量与变量,量 程序在运行过程中,所有与程序运行相关的数据都存储在内存单元中,这些存储着数据的内存单元我们称为量。为了便于理解,我们会为量定义一个易于理解的名字,称为量名。量在程序设计中有两种,一种是常量,另一种是变量。 常量 在程序运行过程中,其值不能被改变的量称为常量。 变量 在程序运行过程中,其值可以被改变的量称为变量。,§2.2 常量与变量,思考:常量与变量在程序设计中的作用是什么? 变量的作用: 就像我们做算术题时,需要草稿纸一样,变量是电脑进行程序运算时存储临时运算结果的地方,没有变量电脑将不能进行任何稍微复杂一点的运算。 常量的作用: 常量是为了方便程序员维护程序而设计的,有些特殊的数值(如3.1415926)在程序里可能多处重复出现,为了避免程序员重复输入产生错误,一般会建立一个常量令它的值等于我们希望的这个数值,来降低代码出错可能。另外,当我们期望改变这个特殊值的时候,只要改变这个常量的值就可以了,而不必改变所有引用这个值的地方。,§2.3 整型数据,什么是整型数据? 整型数据等同于数学上的整数,凡是不带小数的数我们都归于这一类,如1001、23、0、-244、-332等等。 C语言中整型数据的表现形式 我们日常经常接触到的一类整数表现形式是十进制,这种表现形式的特点就是逢十向前进一位;除此以外电脑中还有类似的几种表现形式,如二进制(逢二向前进一位),八进制(逢八向前进一位),十六进制(逢十六向前进一位),在这些进制表现方式中,都有一个特点,那就是对于N进制而言,它每一位上的数值必定不能大于N-1,如十进制每一位最大为9,二进制最大为1,八进制最大为7,十六进制最大为15。,例2.1 整型数据20的各种表现形式:,20 20,2,0,1、十进制:20,2、二进制:10100b,3、八进制:024,4、十六进制:0x14,注:C语言中规定在数据后面加b表示这个数是二进制数;在数值前加0表示是八进制数;在数值前加0x表示是十六进制数。,10 5 2 2 20 2 10 2 5 2 2 20 10 4 2,0,0,1,0,1,8 20 16,2,4,16 20 16,1,4,十六进制表示法: 为了在书写上不与其它进制表示法产生混淆,十六进制借用字符AF来表示数值1015。 十进制: 十六进制:,0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16,0 1 2 3 4 5 6 7 8 9 A B C D E F 10,思考 现实世界还存在哪种进制表示法为了避免与其它进制表示法混淆而采用了特殊的表示方法?,答案 时间。现实世界的时间是使用的六十进制来表示的,如下午3点半的表示方法就是15:30,这种用“:”号区分小时和分钟的表示法就是时钟特有的表达方式,如果没有“:”号放在当中区分,那么15:30表示的意思就会和十进制1530无法区分开来。,§2.3 整型数据,字节的概念 早期的电脑只能存储整型数据,而且只能已二进制方式存储和表达数据。因为每个二进制位只有两种取值可能(要么是1,要么是0),所以早期的存储介质如卡带机就可以通过往纸带对应位置打孔表示1,不打孔表示0的方式来存储信息。对于内存而言,存储方式类似,只是判断0、1的条件由打孔变成了是否有电信号了。正是因为这个特点,所以电脑里存储单元都是以二进制位为单位来衡量的,我们通常所说的字节就表示8个二进制位,可以表示0, 255的数值范围。,13: 1 0 1 1,8个存储单元为一个字节,0 1 0 0 1 0 1 0,字节存储单元,§2.3 整型数据,根据存储单元大小不同,C语言整型数据分为以下几种: 字符型char(占用一个字节单元,表示范围0,255) 短整型short(在16位操作系统下,占用1个字节单元,表示范围0,255;在32位操作系统下,占用2个字节单元,表示范围0, 216-1) 整型int(在16位操作系统下,占用2个字节单元,表示范围0, 216-1;在32位操作系统下,占用4个字节单元,表示范围0, 232-1),§2.3 整型数据,长整型long(占用4个字节单位,表示范围0,232-1) 缺省约定:如果整数后面跟一个字母L,则表示这个数是一个长整型long,否则缺省默认为整型int。如300L就表示一个长整型数据300。 补码 前面所说的整数都没有讨论其负数的情况,负数在电脑中如何存储的呢?其实负数在电脑中也和正整数一样存储,不过需要预先编码一下,这种编码方式我们称为补码。,补码 整数-27的char型数据补码计算过程如下: 27 二进制化 逐个二进制位取反 结果加1即得补码 所以整数-27的char型数据补码的二进制表示是11100101,换算成十进制就是229。小经验:负数最高二进制位总是1,正数最高二进制位总是0。,§2.3 整型数据,有符号整型数据的存储方式 有符号整型数据的存储分为两种情况: 正数直接以二进制方式存储; 负数首先将其转换成补码后再存储。 所以,对于一个整型数据,若其最高二进制位为1则表示这个整型数据是负数,否则是零或者是正数,那么当这个整型数据可表示的无符号范围是0, N的时候,那么它的有符号存储范围就是 -(N+1)/2, (N+1)/2-1 因为0,N的区间大小是(N+1),它的一半空间用来存负数,另一半空间用来存正数和零,所以它的有符号区间应当是负数范围-(N+1)/2, 0)和非负数范围0, (N+1)/2-1的合集。,补充 C语言中几种整型数据有符号和无符号数存储范围对比(以32位操作系统为例):,§2.4 实型数据,C语言使用实型数据类型来描述小数 根据存储空间的不同,C语言中的实型数据主要分为以下几种: float:单精度浮点数,可以精确到小数点后67位,占用4个字节存储; double:双精度浮点数,可以精确到小数点后1617位,占用8个字节存储。 实型数据在电脑中主要以两种方式来表示 小数方式表示:如3.1214、0.521、-112.42; 指数方式表示:如7.819E3、-1.33E10、2.44E-1; 注:在C语言中,3.4f表示这个数值是float型单精度浮点数;而3.4表示这个数值是double型双精度浮点数值。,§2.5 字符数据,什么是字符数据? 字符数据指那些构成文本信息的数据,如英文字母、阿拉伯数字、标点符号等等,这类数据主要是用来和人沟通交流用的,如果仅仅只有前面提到的纯数字数据,那么人机交流会存在很大障碍,呈现在电脑前的只有一串串数字而非人们可以理解的文本信息。 字符数据的表现方式: 单个字符以单引号括起来,如1、a、#等等,但是对于汉字来说,因为每个汉字由两个字符构成的,所以不能用这种方法来表示;,§2.5 字符数据,一串字符用双引号括起来,如“abc”、“123”、“hello”等等,我们把这一串串表示的字符称为字符串。字符串末尾都会有一个字符0来表示字符串的结束,这里的字符0在单引号内虽然有两个字符,但是它表示的是一个转义后的特殊字符,并不是字符0。 不论是在字符或字符串中,都有一个特殊的字符,在C语言里称它为转移符。它从不单独出现,总是和其它字符一起构成一个单独的字符,如n(换行符)、()、()、”(”)等等。如果符号后跟的是数字,那么这个数字必然是八进制的,而且这个后的字符的ASCII码就是这个值,如字符A的ASCII码是65,那么字符101表示的和A是相同的,都是字符A。 单个字符在内存中只占用1个字节,其存储的内容为该字符在ASCII码表中对应的数值。 思考:a “a” 是相同的吗?,2.6 变量的定义和赋值,C语言中的数据有两种基本形式:常量和变量。 常量的值是固定的,变量是可以改变的 变量的定义 类型标识符 变量名; 变量在定义时要注意以下几个问题: 变量的命名要符合C语言规定的标识符的命名规则,即只能由字母、数字和下划线组成,首字母必须为字母或下划线。此外C语言中规定的有特殊用途的关键字,例如int、float、if等,不能作为变量名称。 a b2 stu1 x1_1 sum _name1 正确 2ac stu-1 len#1 else int float 不正确 C语言中大小写是敏感的。但是习惯上,C中的变量一般用小写字母表示。,2.6 变量的定义和赋值,关键字 C语言的关键字共有32个,根据关键字的作用,可分其为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类。 (1)数据类型关键字(12个):char, int, long, short, float, double, signed, unsigned, void, struct, union, enum (2)控制语句关键字(12个): if, else, switch, case, break, default, continue, do , while, for, goto, return (3)存储类型关键字(4个):auto, extern, register, static (4)其它关键字(4个):const, sizeof, typedef, volatile,2.6.1变量的定义,变量的数据类型决定了它的存储类型,即该变量占用的存储空间。所以定义变量类型,就是为了给该变量分配存储空间,以便存放数据。基本的变量类型及其存储空间见表2.1:,2.6.2变量的赋值,变量需要预置一个值,即赋值。赋值操作通过 赋值符号“=”把右边的值赋给左边的变量: 变量名 = 表达式; 例如 x=3; a=a+1; f=3*4+2;,2.6.2变量的赋值,其中需要注意的是: 如果赋值时两侧类型不一致时,系统将会作如下处理: 将实数赋给一个整型变量时,系统自动舍弃小数部分。 将整数赋给一个浮点型变量时,系统将保持数值不变并且以浮点小数形式存储到变量中。 当字符型数据赋给一个整型变量时,系统将整型变量的高字节置0、低字节存放该字符的ASCII值,/*- 程序L2_1.C功能:赋值时类型自动的转换示例。 -*/ #include main() int a,x; float f; a=3.9; f=12; x='A' printf(“a=%d,f=%f,x=%dn“,a,f,x); ,运行结果:a=3,f=12.000000,x=65,/*- 程序L2_2.C功能:将字符'A' 赋值给字符变量的四种方法。 -*/ #include main() char c1,c2,c3,c4; c1='A' c2=65; c3='101' c4='x41' printf(“c1=%c,c2=%c,c3=%c,c4=%cn“,c1,c2,c3,c4); printf(“c1=%d,c2=%d,c3=%d,c4=%dn“,c1,c2,c3,c4); ,思考:c1,c2,c3,c4加上32输出结果是什么? 加上256呢?,2.7 C语言类型修饰符,基本类型可以带修饰性前缀,即类型修饰符,扩大C语言基本数据类型的使用范围。C语言共有4种类型修饰符: long 长型 short 短型 signed 有符号型 unsigned 无符号型 long int(简写为long)型的存储长度为4个字节,用于存储整数超过int型取值范围的情况。long double 型存储长度12个字节,约20位有效数字,取值范围超过double型。除此以外,long还可以修饰的有long自己,long long代表64为整型。其它的都不能用long来修饰。 有符号型signed和无符号型unsigned适用于char型、int型和long型三种类型,区别在于它们的最高位是否作为符号位。unsigned char型取值范围0255,unsigned int(简写为unsigned)型取值范围0232-1,unsigned long型取值范围0232-1。,/*- 程序L2_3.C功能:类型修饰符long和 unsigned的使用。 -*/ #include main() char a1,b1; unsigned char a2,b2; short x1,y1; long x2,y2; a1=127; b1=129; a2=127; b2=129; x1=32767; y1=32769; x2=32767; y2=32769; printf(“a1=%d, a2=%u, b1=%d, b2=%un“,a1,a2,b1,b2); printf(“x1=%d, x2=%ld, y1=%d, y2=%ldn“,x1,x2,y1,y2); ,2.7.1 表达式中数据类型转换,自动类型转换 C语言规定,不同类型的数据在参加运算前会自动转换成相同类型,再进行运算。转换的规则是: 如果运算的数据有float型或double型,自动转换成double型再运算,结果为double型。如果运算的数据中无float型或double型,但是有long型,数据自动转换成long 型再运算,结果为long型。其余情况为int型。,double,float,long,unsigned,int,char,short,高 低,/*- 程序L2_4.C功能:自动类型转换示例。 -*/ #include main() float x,y; long m,n; x=3/2+8/3; y=3.0/2+8/3.0; m=1*2*3*4*5*6*7*8*9; n=1L*2*3*4*5*6*7*8*9; printf(“x=%f, y=%f,m=%ld,n=%ld n“,x,y,m,n); ,结果:X=3.000000,y=4.166667,m=-30336,n=362880,2.7.1 表达式中数据类型转换,强制类型转换 在C语言中也可以使用强制类型转换符,强迫表达式的值转换为某一特定类型。强制类型转换形式为: (类型) 表达式 强制类型转换最主要的的用途一是满足一些运算对类型的特殊要求,例如求余运算符“%”,要求运算符两侧的数据为整型,(int)2.5%3二是防止丢失整数除法中的小数部分。,2.8 计算机中数据的表示,计算机最主要的功能是处理数据,如数值、文字、图形、图像等。而这些数据必须被转换为相应的数字编码,才能进行存储和处理。 二进制、八进制、十六进制 进制之间的转换 二进制数在内存中的表示 字符编码,/*- 程序L2_5.C : 十进制、八进制、十六进制数据及其输出 -*/ #include main( ) int a,b,c,m,n; a=11; b=011; c=0x11; m=65; n=97; printf(“十进制11等于%d, 八进制11等于%d, 十六进制11等于%d,n“,a,b,c); printf(“十进制 八进制 十六进制 字符n“); printf(“ 65 %o %x %c,n“,m,m,m); printf(“ 97 %o %x %c,n“,n,n,n); ,/*- 程序L2_6.C : 从键盘输入一个大写字母,输出其对应的小写字母。 -*/ #include main( ) char c; printf(“请输入大写字母n“); scanf(“%c“, ,/*- 程序L2_7.C:已知x=3.2,y=7,z=2,计算y/3*3.2-2的值。 -*/ #include main( ) float x=3.2 , s; int y=7,z=2;char c; s=y/3*3.2-2; printf(“result is %fn“,s); ,/*- 程序L2_8.C : 编写一个程序,用于输入一个学生的姓名、学号、英语、 数学、计算机成绩,输出学生姓名、学号和平均成绩。 -*/ #include main( ) char name31; /*数组name31最多可以放30个字符或15个汉字*/ long num; /*其值超过32767的号码,需要用长整型*/ int eng,math,comp; float aver; printf(“Please input the student's name:“); scanf(“%s“,name); /*字符串用格式符“%s“,并且数组名name前不需要取址符“ ,练习题,编程输出字符0、9、A、Z、a、z的ACSII码的十进制、八进制和十六进制的表示形式。 编写一个程序,从键盘输入字符(例如1),转换成十进制数(即1),并输出。 提示:“1”的ASCII码为十进制数49,将其减去一个数等于十进制1即可。 已知a=3,b=2,c=2.5,计算(float)(a+b)/3+(int)c的值。 编写一个程序输出5!、10!的结果。 编写一个程序,输入2个学生的姓名、学号、英语、数学、计算机成绩,输出这两个学生的姓名、学号和平均分。,

    注意事项

    本文(Lesson-2数据类型.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开