




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,第二章 数据类型与运算规则,基本数据类型与特点 各种数据类型表示范围 常量的表示方法 变量说明语句 运算符与基本运算规则,本 章 要 点,第二章 数据类型和运算规则,$1 数据与数据类型 $2 常量与常量定义 $3 变量与变量说明,2-1 数据与数据类型,数据 程序操作的对象和产生的结果。 数据类型 指数据的内在表现形式,亦指数据在计算机内部的存储形式(占用的内存单元数量、编码方式、取值范围等)。 常量 在程序运行过程中不允许改变的量。 变量 在程序运行过程中允许改变的量。,基本概念,基本类型,字符型 char 整型 int 浮点型,单精度 float 双精度 double,指针类型,构造类型,数组 结构 struct 联合 union 枚举 enum,无值类型,指针类型,C语言的数据类型,C语言基本数据类型有四种: 字符型 整型 单精度浮点型 双精度浮点型,char int float double,类型说明符,C语言有四种类型修饰符: 短 长 有符号 无符号,short long signed unsigned,类型修饰符,基本数据类型,决定数据所占存储 空间的大小和数据 的范围,整型,字符型,实型,有,无,说明:数据类型所占字节数随机器硬件不同而不同:,不同类型机器所对应的不同形式整型数据的存储情况,2-2 常量与常量定义,整型常量,即整常数(3种形式) 10进制 8进制 16进制 实型常量,即浮点数(2种形式) 十进制 指数 字符常量 字符串常量,:0 9,:0 7 以数字0开头,:0 9,AF/af,以0x或0X开头,:符号、整数、小数点和小数,:用e或E和表示指数部分,常量,整型常量的不同表示方法: 10进制: 100 -8 0 +123 8进制: 010 024 0100 16进制: 0x38 0x10 0X10 0XFF 0xa 整型常量的类型: 1.在整型表示范围之内,根据值大小默认类型 2.在常量后面加l或L,则认为它是long int型 例如:都是long int型常量 10进制:-123L 0L 432l 8进制: 010L 024L 0100L 16进制: 0x38L 0x1000L 0XFFl 0xa0000l,例 30000 为int型 65536 为long int 型,整型数据的存储,整数占2个字节 1 000 0001 1000 0001 0 000 0001 1000 0001,整型数据在计算机中以 补码形式存储,正数的原码、反码和补码相同 1的补码 0 000 0000 0000 0001 32767的补码 0 111 1111 1111 1111 (215-1) 负数 -1 原码 1 000 0000 0000 0001 反码 1 111 1111 1111 1110 原码取反 补码 1 111 1111 1111 1111 反码1,实型常量的不同表示方法: 十进制小数形式:(必须有小数点) 1.0 1. +12.0 -12.0 0.0 指数形式(e或E前后必须有数字;指数必须为整数) 1e3 1.8e-3 -123e-6 等价于:1000 1.8*10-3 -123*10-6 -.1e-3 .1E-10 等价于:-0.1*10-3 0.1*10-10 实型常量的类型 默认double型; 在实型常量后加字母f或F,认为它是float 型 长双精度型常量由常量值后跟L或l来表示,字符型常量:用一对单引号括起来的单个(可显示)字符 实例:A g # 0 2 + , ; ( ) 字符定界符:单引号 字符型数据的存储格式: 每个字符占用一个字节,存储该字符的ASCII码(见书附录),每个字符:惟一的次序值( ASCII码) 字符 ASCII码 内存 A 65 0100 0001 B 66 0100 0010,字符的数值特征 字符可以当整数用,ASCII码 A+1 =?,如何表示不可显示字符?,回车/退格/TAB?,如何表示定界符?,“ 产生歧异,转义符:将后面的字符转换为其它含义,字符形式 功能 使用举例 n 换行(ASCII码为10) printf(”n”); t 横向跳格 printf(”t”); b 退格 r 回车(ASCII码为13) f 走纸换页 字符(ASCII码为92) 表示字符 单引号 表示字符 ” 双引号 ” 表示字符 ” ddd 用8进制表示字符 a=141 A=101 xhh 用16进制表示字符 a=x61 A=x41,注意:转义符实际作为一个字符来对待. 若反斜线之后的字符和它不构成转义序列, 则不起转义作用将被忽略.,语句printf(“ANbcnDEFn”); printf(“tabrcdnefghx”);,字符串常量:用一对双引号括起来的字符序列 实例:”This is C string.” ”a” ” ” (1个空格) ” (不含空格) 串定界符:双引号 ” 字符串长度:字符串中包含的字符数量。,串长=17 串长=1 串长=1 串长=0,“t“NameAddressn“,串长=15,空串,实例:,“C is very easy.“,串长=17,注意: 字符串“a“ 与 字符a 的区别,“He said“ok.“n“,串长=13,字符串结束标记:0,每一个字符串常量结尾都有一个字符0 (一般情况是由系统自动加上的); 字符串所占空间=长度+1,字符常量与字符串常量不同,例: char ch; ch=“A”;,符号常量定义形式 #define 标识符 常量 用定义的一个标识符来代表一个常量,称为符号常量 # 宏命令专用定义符号 define 命令 标识符 宏替换名(一般采用大写字符) (位置位于程序前面 ),注意:符号常量与变量不同,它的值在程序运行过程中不能改变,也不能重新赋值。,符号常量,例 求球的表面积和体积,# include void main( ) float r, s, v; scanf(“%f“, ,s=4.0*3.14159*r*r ; v=4.0/3.0*3.14159*r*r*r ;,# define PI 3.14 # include void main( ) float r, s, v; scanf(“%f“, ,例32 符号常量,# define PI 3.14159,2-3 变量与变量说明,变量:在程序运行过程中允许改变的量。 变量的说明格式: 类型修饰符 类型说明符 变量1,变量2,变量n; 例如:int i; char ch, str; long int k=1, m=0x12345678; double x, y=1; 变量说明意味着确定了:该变量 占用内存单元的数量, 数据在内存的表示方式, 数据的取值范围。,变量,决定分配字节数 和数的表示范围,合法标识符,注意事项:变量必须 先定义,后使用。 # include #define PRICE 30 main() int num,total; num=10; total=num*PRICE; printf(“total=%d“,total); ,一个变量名只能定义一次。 变量一般都定义在函数的开头,不能定义在函数的中间或后面。见名知意,习惯上用小写。,变量: 先定义,后使用 先赋值,后引用 # include void main( ) int x, y; x = 3; y = x*x ; printf(“%d”, y ) ; ,整型变量(3种形式) 实型变量(3种形式) 单精度浮点型 float x, y, z; 双精度浮点型 double u, v, w; 长双精度浮点型 long double m,n; 字符型变量 指针与指针变量,根据其范围,分为三类:,基本整型(int) 短整型(short int) 长整型(long int),2byte,2byte,4byte,为了充分利用变量的表达范围,又可以将变量定义为: 有符号数(signed)(可省略) 无符号数(unsigned),4字节存储 8字节存储 16字节存储,main( ) int i; i= 1; i=i*2; printf(”n i=%d”,i); i=i*3; printf(”n i=%d”,i); i=i*4; printf(”n i=%d”,i); i=i*5; printf(”n i=%d”,i); i=i*6; printf(”n i=%d”,i); i=i*7; printf(”n i=%d”,i); i=i*8; printf(”n i=%d”,i); i=i*9; printf(”n i=%d”,i); i=i*10; printf(”n i=%d”,i); ,期望结果 i=2 i=6 i=24 i=120 i=720 i=5040 i=40320 i=362880 i=3628800,实际运行结果 i=2 i=6 i=24 i=120 i=720 i=5040 i=-25216 i=-30336 i=24320,产生数据溢出,上溢,下溢,数据精度 取值范围 单精度 67位有效数字 3.4e-38 3.4e+38 双精度 1516位有效数字 1.7e-308 1.7e+308 长双精度 1819位有效数字 1.2e -4931 1.2e4932,实型变量,数据精度 与 取值范围是两个不同的概念: float x = 1.23456789; float y = 123456789; 虽在数据表示范围内,但无法精确表达。 float z = 1.2e55 z的精度要求不高,但数据表示范围超出。 并不是所有的实数都能在计算机中精确表示。,x=1.234568 y=1.234567e8,假定float的精度为7位,double的精度为16位 #include main() float x=0.0; double y=0.0; int i=1; while(i=10000) x=x+100000; y=y+100000; i=i+1; x=x/100000; y=y/100000; printf(“x=%f,y=%fn“,x,y); ,运行结果为: x=9998.517578 y=10000.00000,虽然实型数据的表示形式有两种,但在内存中 均是以指数形式存放,数 符,小数,阶符,指数,例: 指数表示 3.14159,+ 0.314159 + 1,规格化: 小数点在第一个 有效数字前面;小数部分 小于1的纯小数,字符变量,char c1, c2, c3; c1=2; c2=#; c3=A; 或 c3=65;,int i; i=65; 或 i=A; 整型变量和字符变量的定义和赋值可以互换 【 ASCII码范围】,通过关键字char来说明,例 main() char c1,c2; c1=a; c2=A; printf(“c1=%c,c2=%cn”,c1,c2); printf(“c1=%d,c2=%dn”,c1,c2); 程序输出为: c1=a,c2=A 说明: 字符数据与整型数据之间可以相互赋值。 c1=97,c2=65 字符数据可以以字符或整型数据两种方式 输出。,变量在说明之后,没有固定的初始值,要先赋值(给定一个初始值),后使用。 变量赋初值 将变量说明与赋初值合一,在说明变量时同时完成。 实例 char cc = a, sex= f ,; int x = 10, y = -10, z; double try = 28.5, w = 1e10;,变量赋初值,让变量使用之前有值,初始化,方法,int a=5; int a,b,c=5; int a=b=c=5;,初始化不是在编译时进行,而是在程序运行时完成的。,定义变量的同时为其赋值称初始化,变量的4个属性: 变量名称:编程时使用(进行编程,按名引用) 变量数据类型:编程和运行时使用(决定占用多少存储单元) 变量的值:程序运行时使用(进行运算) 变量地址:程序运行时,要将变量的值保存在计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 辽宁经济职业技术学院《面点工艺学实训》2024-2025学年第一学期期末试卷
- 重庆科技职业学院《MATLAB及系统仿真》2024-2025学年第一学期期末试卷
- 哈尔滨信息工程学院《无线传感网技术及实践》2024-2025学年第一学期期末试卷
- 国际山地救援知识培训课件
- 《小公鸡和小鸭子》小学教案上课件
- 学校书包课件
- 学医课件公众号
- 二零二五年度仓储物流反担保协议书
- 2025版钢管运输安全责任及培训合同范本
- 二零二五年度会议活动包车服务协议
- 2025年事业单位工勤技能-河南-河南农机驾驶维修工一级(高级技师)历年参考题库含答案解析(5套)
- 初中地理学科课程规划方案
- 定额〔2025〕1号文-关于发布2018版电力建设工程概预算定额2024年度价格水平调整的通知
- 安全- 中国移动认证考试L1题库(附答案)
- 干部民主推荐表(样式)
- 【公开课】社区教案
- 平面磨床操作时注意事项
- GB/T 29651-2013锰矿石和锰精矿全铁含量的测定火焰原子吸收光谱法
- GB/T 13275-1991一般用途离心通风机技术条件
- 核心素养下的高考语文命题评价体系讲座课件
- 高一英语必修一试卷(含答案)(适合测试)
评论
0/150
提交评论