




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二讲 基本数据类型,2,第二讲 基本数据类型,引例 数据类型 变量与常量 预备知识 内存储器的组织 基本数据类型 整数类型 字符 浮点类型,C语言程序设计,3,引例,引例 问题 计算任意一个圆的面积。 源程序(例2.2),基本数据类型,#include void main() float r, area; /定义变量 scanf(“%f”, /输出 ,1 area=3.140000,area,r,area = r2,基本数据类型,数据(Data) 程序需要使用数据。 数据是信息的载体。 数据有多种形式:数、字符、图片、音乐等。 数据类型的作用 决定数据的存储方式和占用的存储空间的大小,以及可以表示的数值范围。 决定可以进行的操作。,计算机是如何区分这些数据的呢?,基本数据类型,基本数据类型,数据类型,基本数据类型,构造数据类型,指针类型,空类型,整型(int) 实型(浮点型) 字符(char),单精度(float) 双精度(double),数组类型 结构体类型 共用体类型 枚举类型,C语言的数据类型,基本数据类型,6,变量与常量,常量(Constants) 在程序运行过程中,值不能被改变的量称为常量。 直接常量(字面常量) 有不同的类型:整型常量,如1、2、0、-5等;实型常量,如5.1、2.1、-1.56等;字符常量,如a、w等。 如a=b+5; 符号常量。例如引例中的圆周率3.14。 可以用一个标识符代表一个常量,被称为符号常量。 符号常量的定义:#define 符号常量名 常量(#define PI 3.14)。 符号常量名通常用大写,变量名用小写。 使用符号常量的好处: (1)含义清楚。 #define PI 3.14 (2)符号常量可以做到一改全改。,基本数据类型,7,变量与常量,变量(Variables),基本数据类型,在程序运行过程中其值可以改变的量,系统为程序中的每一个变量开辟一个存储单元。 如:main( ) int a,b; a=2; printf(“a=%dn“,a); b=4; printf(“b=%dn“,b); ,2,4,a,b,1000,1004,变量名,变量值,存储单元地址,8,变量与常量,标识符(Identifiers)是程序中引用对象的名称。 用来标识变量、符号常量、数组、函数、结构体、共用体、自定义类型等。 标识符分为3类。 关键字标识符:C语言中的关键字不能用作变量名及其他用户标识符。比如不能用int作变量名,但可以用int1、Int、INT等。 关键字(Keywords)也称为保留字(Reserved words)。包括: 类型说明:int、long、short、float、double、char、unsigned、signed、const、void、volatile、enum 、struct、union 语句定义:if、else、goto、switch、case、do、while、for、continue、break、return、default、typedef 存储类别说明:auto、register、extern、static 长度运算符:sizeof,基本数据类型,9,变量与常量,预定义标识符:一般指C语言提供的库函数名和编译预处理命令。最好不要使用预定义标识符作为用户标识符使用。比如系统库函数名printf、scanf等。 用户标识符:在编程时,用户可以自己定义的一些变量、函数和数组就组成了用户标识符。 标识符命名规则如下: 只能由字母、数字和下划线组成,且必须以字母或下划线开头; 区分英文大小写字母。因此day、Day、DAY是不同的变量; 标识符的有效长度随系统而异,如Microsoft C为8个有效字符,而Turbo C为32个有效字符。如果超长,则超长部分被舍弃。 不能与关键字标识符相同,尽量不使用预定义标识符。 一般来说,用户标识符的命名最好通过变量名就知道变量值的含义。通常应选择能表示数据含义的英文单词或汉语拼音作变量名。,基本数据类型,10,位、字节和字,内存储器的组织,基本数据类型,11,整数的存储方式,有符号的正整数 在内存中以二进制补码形式存放。 正整数的补码与原码相同。 例如:10,基本数据类型,符号位,数轴,0,215-1=32767,可表示的数的范围,-215=-32768,12,整数的存储方式,有符号的负整数 在内存中以二进制补码的形式存放。 例如:-10,基本数据类型,符号位,13,整数的存储方式,无符号整数 所有二进制位都存放数值。 例如:65535,基本数据类型,0,216-1=65535,可表示的数的范围,14,整数的类型,C语言提供多种整数类型 为程序员提供了针对不同用途的多种选择。,基本数据类型,C标准只规定:short int long 最大最小值参考,仅供参考,实际值与所使用的操作系统、编译系统、机器有关。,15,整型常量,整型常量有三种形式: 十进制(decimal)整数 12 65 65535 八进制(octal)整数:带前缀 0(zero) 014 0101 0177777 十六进制(hexadecimal)整数:带前缀 0x 或 0X 0xc 0x41 0xffff 默认类型是int,即有符号的基本整型。 可以加上后缀 u 或 U 表示无符号整数,或者 l 或 L 表示长整数。 0xb5Lu,基本数据类型,各种进制之间的转换,二进制、八进制、十六进制转换成十进 方法:把每一位的数字乘以其相应位的权值,将各乘积相加,各种进制之间的转换,十进制转换成二进制、八进制、十六进制 方法: 整数部分:除基取余法,直至商为0 小数部分:乘基取整法,直至小数部分为0或达到精度为止,例 把十进制数459.78125转换成十六进制数,(459.78125)10=(1CB.C8)16,各种进制之间的转换,二进制与八进制之间的转换方法: 二进制转换成八进制: 整数部分从右向左,小数部分从左向右,每3位一组(不足3位补0),转换成八进制。 八进制转换成二进制: 用3位二进制数代替每一位八进制数。,例 (11010.01)2=(011,010.010)2=(32.2)8,例 (24.6)8=(010,100.110)2=(10100.11)2,000 0 001 1 010 2 011 3 100 4 101 5 110 6 111 7,各种进制之间的转换,二进制与十六进制之间的转换方法: 二进制转换成十六进制: 整数部分从右向左,小数部分从左向右,每4位一组 (不足4位补0),转换成十六进制。 十六进制转换成二进制: 用4位二进制数代替每一位八进制数。,例 (11010101.111101)2=(1101,0101.1111,0100)2=(D5.F4)16,例 (4B9.E)16=(0100,1011,1001.1110)2=(10010111001.1110)2,0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F,20,整型变量,声明变量(Declaration) 变量在使用之前必须被声明。 声明语句的格式: 举例,基本数据类型, ,.;,int counter; int width, height; short x, y; long number;,变量声明创建了变量:为变量分配了存储空间。,height,21,整型变量,初始化(Initialize)变量 为变量赋一个初始值。 可以在声明语句中初始化变量。 举例 变量获得值的方法 直接赋值(a=5;) 输入(scanf(“%d”,),基本数据类型,int counter = 0; int width = 352, height = 288;,初始化式,288,height,22,整型变量,输出变量的值 可以使用printf()函数。 与int类型对应的格式说明符是%d。 举例,基本数据类型,#include void main() int a, b; a=32767; b=-32768; printf(“a=%d,b=%dn“, a, b); ,a=32767,b=-32768,23,整数的溢出,溢出 整数太大,超出了整数类型的数值范围。 使用printf() 时与unsigned int类型对应的格式说明符是%u。 举例,基本数据类型,#include void main() int a, b; unsigned c, d; a = 2147483647; b = a+1; c = 4294967295; d = c+1; printf(“a=%d,b=%dn“, a, b); printf(“c=%u,d=%u“, c, d); ,a=2147483647,b=-2147483648 c=4294967295,d=0,?,24,整数的溢出,溢出 结果分析 结论 a+1 的结果(2147483648) 超出了基本整型变量 b 所能容纳(表示)的数值范围(-21474836482147483647)。 请分析d的结果。,基本数据类型,0 1 1 1 1 1 1 1.1 1 1 1 1 1 1,1 0 0 0 0 0 0 0.0 0 0 0 0 0 0,a(2147483647),1 0 0 0 0 0 0 0.0 0 0 0 0 0 0,a+1(2147483648),b(-2147483648),12,加正数,减正数,25,字符的存储方式,字符编码 计算机使用一种数字编码(整数)来表示字符,每一个字符都对应一个特定的整数。 常用的编码是ASCII(美国信息交换用标准码)。 7位二进制数,十进制码值范围从0到127。 一般用一个字节保存,最高位为0。 字符的存储方式与整数相同 举例 字母A的ASCII码值为65, 那么在内存中以65的二进制形式存储 且占一个字节。,基本数据类型,01000001,26,字符的类型和字符变量,C语言的字符类型:char 占一个字节; 可视为一个有符号的整数。 举例,基本数据类型,#include void main() char c1, c2; /声明字符变量 c1 = 97; /把一个整数赋值给字符变量 c2 = c1-32; /字符变量可以进行算术运算 printf(“c1=%c,c2=%cn“, c1, c2); printf(“c1=%d,c2=%dn“, c1, c2); ,c1=a,c2=A c1=97,c2=65,27,字符常量,字符常量 用单引号括起来的一个字符。 x 9 + C语言将字符常量视为int类型。 举例 如果int类型为16位,char类型为8位, 那么对于bc,将把b和c的ASCII码值存储在两个字节中,并把c赋值给变量c2。 注意:不同系统处理方式不同,结果不同。,基本数据类型,char c1, c2; c1=a; c2=bc;,0 1 1 0 0 0 0 1,c1,0 1 1 0 0 0 1 1,c2,0 1 1 0 0 0 1 1,0 1 1 0 0 0 1 0,bc,L,H,97,99,99,98,28,字符常量,转义字符(escape character) 指代一些特殊的字符。(打印不出来的字符) 举例,基本数据类型,a 警报 反斜杠() b 退格 ? 问号(?) f 走纸 单引号() n 换行 “ 双引号(”) r 回车 ooo 八进制值(o表示一个八进制数字) t 水平制表符 xhh 十六进制值(h表示一个十六进制数字) v 垂直制表符,#include void main() printf(“atbncbd100x40n“); ,ab d,29,浮点数的存储方式,浮点数 浮点型数据在内存中按指数形式存放。 例如:314.159 = 3.14159102,基本数据类型,由此可见,尾数部分的宽度决定了有效数字的个数(即精度),阶码部分的宽度决定了数值范围。,科学计数法允许使用少量的数字表示很大范围的数和很小的数。,30,浮点数的类型,浮点数也有多种类型 类型名称及典型大小,基本数据类型,S = 1 参考,仅供参考,实际值与所使用的操作系统、编译系统、机器有关。,数轴,0,可表示的正数,可表示的负数,31,浮点型常量,浮点型常量有两种形式: 十进制形式 12.3 .65 0. 指数形式: 1.2e-2 .1E5 7E0 1.210-2 0.1105 7.0100 默认类型是double。 可以加上后缀 f 或 F 表示float类型,或者 l 或 L 表示long double类型,否则该常量是double类型。 2.3f 1.2L .1E5f,基本数据类型,32,浮点型变量,浮点型变量的声明和初始化 举例,基本数据类型,float radius; double x = 0.0, y = 0.0;,不能写成: double x = y =0.0;,33,浮点型变量,浮点数的输出 使用printf()函数 float和double对应的格式说明符为%f、%e。 举例,基本数据类型,#include void main() float f; double d; f=33333.33333f; d=33333.3333333333; printf(“f=%fnd=%f“, f, d); ,f=33333.332031 d=33333.333333,有效数字位数是有限的,在可表示的有效位之外的数字被舍去。因此可能会产生误差。,34,浮点数的舍入误差,浮点数的舍入误差 举例,基本数据类型,#include void main() float a, b; a=123456.789e5; b=a+20; printf(“a=%fnb=%f“, a, b); ,a=12345678848.000000 b=12345678848.000000,?,35,浮点数的舍入误差,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教师课堂培训课件
- 口才户外采访课件
- 燃放技术人员考试题及答案
- 辅警知识培训会议课件
- 邮储银行2025秋招笔试专业知识题专练及答案福建地区
- 邮储银行2025黔南布依族苗族自治州秋招笔试专业知识题专练及答案
- 2025年3D打印技术的定制化医疗设备应用
- 2025年3D打印的金属材料与航空航天应用
- 交通银行2025宁波市秋招笔试性格测试题专练及答案
- 2025量子密码学的安全漏洞分析
- 第一单元-第2课-《国色之韵》课件人教版初中美术八年级上册
- 半导体器件专用设备零部件制造项目可行性研究报告
- 地坪承包合同范本3篇
- 中学校长在2025年秋季学期开学典礼上致辞:六个“成长关键词”耕耘当下遇见未来
- (2025年标准)猪场租赁协议书
- 交通规划中智能交通信号控制技术应用2025年研究报告
- 公共空间设计培训课件
- 2025年公安部交管局三力测试题库及答案
- 2025年邮政集团招聘考试复习资料与预测题
- 2025年第十届全国中小学“学宪法、讲宪法”知识竞赛题库及答案
- 地下管网管道施工现场管理方案
评论
0/150
提交评论