版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1张3.1 C的数据类型3.2 常量与变量3.3 整型数据3.4 实型数据第3章 数据类型、运算符与表达式第1页,共60页。第2张3.5 字符型数据3.6 变量赋初值3.7 各类数值型数据间的混合运算3.8 算术运算符和算术表达式3.9 赋值运算符和赋值表达式3.10 逗号运算符和逗号表达式第2页,共60页。第3张本章大纲数据类型、运算符与表达式(7学时)教学内容:C的数据类型:基本数据类型;自定义的数据类型常量和变量:符号常量与一般常量;变量的定义和赋值各类型数据的混合运算运算符与表达式:算术运算符;关系运算符与逻辑运算符;表达式的执行顺序第3页,共60页。第4张基本要求:了解C语言的数据
2、类型;了解常量的概念、常量的分类;了解整型、实型和字符型数据的存储形式;掌握变量的概念、变量的分类及变量的初始化方法;掌握各类数值型数据间的混合运算规则;掌握常见的各种运算符及表达式;理解运算符的优先级与结合性。重点:基本数据类型;变量定义和赋值;运算符与表达式难点:自定义的数据类型;运算符优先级。第4页,共60页。第5张 数据类型在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作。 基本类型:整型,字符型,浮点型(单精度型,双精度型),枚举类型; 构造类型:数组类型,结构体类型,共用体类型,指针类型,空类型。数据类型决定:1.数据占内存字节数2.数据取值范围3.可对数据进行的操作
3、3.1 C的数据类型第5页,共60页。第6张 数据结构是指同一数据元素类中各数据元素之间存在的关系。数据结构分别为逻辑结构、存储结构(物理结构)和数据的运算。数据的逻辑结构是对数据之间关系的描述,有时就把逻辑结构简称为数据结构。数据结构在计算机中的表示(映像)称为数据的物理(存储)结构。 数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。数据结构不仅是一般程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序的重要基础。 常用数据结构 :数组、线性表、链表、队列、栈、树、图等的定义、存储和操作数据结构补充了解第6页,共60页。第7张(1)不同的计算机语言所
4、允许定义和使用的数据结构是不同的。 (2)处理同一类问题,如果数据结构不同,算法也会不同。第7页,共60页。第8张3.2 常量与变量常量:在程序运行过程中,其值不能被改变的量称为常量。3.2.1 常量和符号常量字面常量或直接常量符号常量:以用一个标识符代表一个常量例如 : 12,0,-3为整型常量; 4.6、-1.23为实型常量; a,d为字符常量。#define PRICE 30第8页,共60页。第9张例3.1符号常量的使用。#define PRICE 30main ( ) int num, total; num=10; total=num * PRICE; printf(total=%d,
5、total); total=3001.习惯上,符号常量名用大写2.程序中不能再次对符号常量赋值。#define PRICE 30main ( ) PRICE=40; 第9页,共60页。第10张这么麻烦给常量起了名字,有什么好处吗?(1)含义清楚。定义符号常量名时应考虑“见名知意”。(2) 在需要改变一个常量时能做到“一改全改”。#define PRICE 30一看就知道PRICE表示价格,但千万不要在定义圆周率的时候也这样写,虽然不错,但达不到“见名知意”的目的了。#define PRICE 3.1415926第10页,共60页。第11张3.2.2 变量变量是指在程序运行期间,其值可以改变的量
6、。1.用来存放数据2.对应内存中的一个特定的存储单元3.有名字,以便被引用1.怎么对应到特定的存储单元呢?由编译系统完成。(参阅编译原理)2.变量的名字要怎么起呢?第11页,共60页。第12张?变量怎么对应到特定的存储单元呢?存储单元地址3变量值变量名存储单元地址一般用十六进制数表示 ,与变量名一一对应,类似于身份证号,唯一但难记,类似于身份证号。存储单元每个存储单元都由一个唯一的存储单元地址和存储在单元里面的内容组成为了便于引用存储单元而起的名字。类似于人名2004H存储单元的内容a第12页,共60页。第13张标识符(identifier):用来标识变量名、符号常量名、函数名、数组名、类型名
7、、文件名的有效字符序列称为标识符。标识符的命名规则:(1)只能由字母、数字和下划线三种字符组成,(2)且第一个字符必须为字母或下划线。 必须同时满足以上两个条件。 不合法的标识符名:dohn,¥123,3d64,ab 合法的标识符名:while, _total,student_name,lotus_1_2_3,Class,class ,BASIC C语言区分大小写!Class和CLASS,Class,cLass都不同!第13页,共60页。第14张(1)符合标识符的2个命名规则;(2)不能和关键字(32个)重名。必须同时满足以上两个条件。变量的名字要怎么起呢?合法的变量名:num,day,x1不
8、合法的变量名:3num,day,while“先定义,后使用”我是君子,先说了才会用啊!强制类型定义第14页,共60页。第15张3.3 整型数据3.3.1 整型常量的表示方法整型常量即整常数。(1) 十进制整数。(2) 八进制整数。 (3) 十六进制整数。如123表示十进制数123以0开头的数是八进制数。如0123表示八进制数123, -011表示八进制数-11以0 x开头的数是十六进制数。如0 x123,代表十六进制数123 -0 x12等于十进制数-18还记得进制间如何转换吗?忘了的赶快找找啊!单片机程序设计中经常用到第15页,共60页。第16张1.整型数据在内存中的存放形式数据在内存中是以
9、二进制形式存放的。每一个整型数据(包含变量和常量)在内存中占2个或4个字节。(a)存放的示意图 (b)实际存放图10=(1010)2例子:3.3.2 整型变量第16页,共60页。第17张 在计算机系统中,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。 补码(complement) 一个正数的补码和其原码的形式相同。负数补码的求法:(1)写出该数的绝对值的二进制形式;(2)按位取反;(3)再加1。原码又是什么呢?掌握第17页,共60页。第18张原码是一种计算机
10、中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位),该位为0表示正数,该位为1表示负数,其余位表示数值的大小。 补充内容:原码(true form)小数原码的定义 X = X (0X1)=1X (1X0 )例如: X=+0.1011 , X原= 0.1011 X=0.1011 , X原= 1.1011 整数原码的定义 X原=X (0X 2n) =2nX(-2nX0)例如:+1011原=00001011 -1011原=10001011 了解第18页,共60页。第19张2. 整型变量的分类 (1) 基本整型(int)(2) 短整型(short int)(3) 长
11、整型(long int)修饰符:(1)有符号(signed)(2)无符号(unsigned)有符号基本整型 signed int 无符号基本整型 unsigned int有符号短整型 signed short int无符号短整型 unsigned short int有符号长整型 signed long int无符号长整型 unsigned long int 里的关键字可以省略!第19页,共60页。第20张如果内存中有个数据是这样存储的,那么它是多少?如果是无符号数,它是65535如果是有符号数,它是-1例子第20页,共60页。第21张3. 整型变量的定义 int a,b;unsigned sh
12、ort c,d;long e,f;C规定在程序中所有用到的变量都必须在程序中定义,即“强制类型定义”对变量的定义,一般是放在一个函数的开头部分的声明部分(也可以放在函数中某一分程序内,但作用域只限它所在的分程序)。第21页,共60页。第22张例3.2整型变量的定义与使用。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); 第22页,共60页。第23张 0 0 0 0 0 0 0 0 0 0 0 0 1
13、 1 0 0 (a=12) 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 (u=10) 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 (c=22)第23页,共60页。第24张 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 ( b=24的补码) 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 (u=10) 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 (d的补码) 1 1 1 1
14、 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 (d的绝对值14)求b=24的补码a+u=22,b+u=-14第24页,共60页。第25张4. 整型数据的溢出在Turbo c中一个int型变量的最大允许值为32767,如果再加1,会出现什么情况?main() int a,b; a=32767; b=a+1; printf(%d,%d,a,b);32767,-3276832767+1不等于32768吗?第25页,共60页。第26张 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 (a=32767) 1 1 0
15、0 0 0 0 0 0 0 0 0 0 0 0 0 0 (负数)? 1 0 1 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 0 (b的绝对值,即32768 ) 真值为 - 32768 既然是这样,那要怎么改才能得到预期的结果32768呢?想一想啦!第26页,共60页。第27张3.3.3 整型常量的类型(1) 一个整数,如果其值在-32768+32767范围内,认为它是int型,它可以赋值给int型和long int型变量。(2) 一个整数,如果其值超过了上述范围,而在-2147483648+2147483647范围内,则认
16、为它是长整型,可以将它赋值给一个long int型变量。(3)一个整常量后面加一个字母u,认为是unsigned int型,如12345u,在内存中按unsigned int规定的方式存放。如果写成-12345u,则先将-12345转换成其补码53191,然后按无符号数存储。(5) 在一个整常量后面加一个字母l或l,则认为是long int型常量。例如123l、432l、0l等。第27页,共60页。第28张3.4 浮点型数据3.4.1 浮点型常量的表示方法浮点数(floating-point number)即实数(real number)。十进制小数形式。它由数字和小数点组成指数形式123e3
17、,123E3.123,123., 123.0, 0.0e32.1e3.5, e注意:字母e(或E)之前必须有数字,且e后面的指数必须为整数第28页,共60页。第29张“规范化的指数形式”: 即在字母e(或E)之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字。一个实数在用指数形式输出时,是按规范化的指数形式输出的。 知道了!123.456可以表示为123.456e0, 12.3456e1、 1.23456e2、 0.123456e3、 0.0123456e4、 0.00123456e5 无数种?原来1.23456e2是规范化的指数形式。第29页,共60页。第30张3.4.2 浮点型
18、变量图3.7 实数 3.14159 在内存中的存放形式示意1.浮点型数据在内存中的存放形式一个浮点型数据在内存中占4个或8个字节(32位或64位)按照指数形式存储的纯小数部分采用规范化的指数形式了解小数位数越多,精度越高指数位数越多,表示的数的范围越大。第30页,共60页。第31张2.浮点型变量的分类C浮点型变量分为三类:单精度(float)双精度(double)长双精度型(long double)占4个字节(32位)占8个字节(64位)占16个字节(128位)float x,y;double z;long double t;第31页,共60页。第32张3.浮点型数据的舍入误差main()fl
19、oat a,b; a = 123456,789e5; b = a + 20 ; printf(%f,b); 应当避免将一个很大的数和一个很小的数直接相加或相减,否则就会“丢失”小的数。浮点型用有限的存储单元存储,所以提供的有效数字也就有限,故会产生舍入误差。12345678848.000000第32页,共60页。第33张3.4.3 浮点型常量的类型f = 2.45678 * 4523.65 双精度双精度单精度*取前7位提高精度运算速度降低难道不能就按单精度计算吗?f = 2.45678 f* 4523.65F第33页,共60页。第34张3.5 字符型数据3.5.1 字符常量1.用单引号(即撇号
20、)括起来的一个字符。如a,x,D,?,$ 。2.以一个“”开头的字符序列。是 “控制字符”,在屏幕上是不能显示的如n,t,b,r,, , , ddd, xhh和A相同吗?不同!第34页,共60页。第35张例3.5转义字符的使用。ain() printf( ab ct derftgn); printf(htibbj k); fab c gdeh jikf gdeh j k打印机屏幕白纸黑字空说无凭第35页,共60页。第36张3.5.2 字符变量1.字符型变量用来存放字符常量2.只能放一个字符3.一个字符变量在内存中占一个字节字符变量的定义:charc1,c2;字符变量的赋值:c1=a;c2=b;
21、字符变量的定义和赋值: char c1=a,c2=b;第36页,共60页。第37张3.5.3 字符数据在内存中的存储形式及其使用方法存储输出将该字符的相应的ASCII代码放到存储单元中1.以字符形式输出2.以以整数形式输出示意图实际存储情况第37页,共60页。第38张main()char c1,c2; c1=97; c2=98; printf(%c %cn,c1,c2);/*以字符形式输出*/ printf(%d %dn,c1,c2);/*转换为整数形式输出*/ 例3.6 向字符变量赋以整数。%c表示以字符形式输出。%d表示以带符号的十进制整数形式输出。a b97 98通用第38页,共60页。
22、第39张例3.7 大小写字母的转换。main()char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(%c%c,c1,c2); A B掌握第39页,共60页。第40张3.5.4 字符串常量a0字符串常量是一对双引号括起来的字符序列。如: “CHINA”, ”a”,“how do you do.”,”123.45”“a”=?“a”是字符串常量aa是字符常量a第40页,共60页。第41张char c;c=a;c=a;c=“CHINA 考考你下面3个赋值语句中哪些是对的?为什么?1.在C语言中没有专门的字符串变量2.必须使用字符数组,数组中每一个元素存
23、放一个字符。 第41页,共60页。第42张3.6 变量赋初值1.允许在定义变量的同时使变量初始化2.部分赋初值3.同种类型的可以合并定义int a=3;float f=3.56;char c=a;int a,b,c=5;int a=3,b=3,c=3;int a=b=c=3;?第42页,共60页。第43张3.7 各类数值型数据间的混合运算图3.10转换规则纵向的箭头表示数据转换的方向横向向左的箭头表示必定的转换第43页,共60页。第44张10 + a + i * f - d / e假设i是int变量,值为3,f是float变量,值为2.0,d是double变量,值为4.0,e为long型,值为
24、8*优先级高于+算10+a:把a转换成int为97,再加10,等于107107 + i * f - d / e算i*f:把i和f都转换成double,然后相乘得6.0优先级相同 107 + 6.0 - d / e+和-优先级相同算107+6.0:把107转换成double,和为113.0/优先级高于-算d/e:把e转换成double,商为0.5113.0 - d / e113.0 - 0.5把113.0 转换成double,差为112.5第44页,共60页。第45张3.8 算术运算符和算术表达式1算术运算符 (+ - * / %)2关系运算符 ( = = = = !=)3逻辑运算符 (! &
25、|)4位运算符 ( & |)5赋值运算符 (=及其扩展赋值运算符)6条件运算符 (? :)7逗号运算符 (,)8指针运算符 (*和&)9求字节数运算符 (s i z e o f)10强制类型转换运算符 ( (类型) )11分量运算符 ( -)12下标运算符 ()13其他 (如函数调用运算符()第45页,共60页。第46张3.8.2 算术运算符和算术表达式1. 基本的算术运算符+:加法运算符 或正值运算符-:减法运算符 或负值运算符*:乘法运算符/:除法运算符%:模运算符 或求余运算符如3+5、+3如5-2、-3如3*5如5/3=1,5/3的结果可能是-1,也可能是-2大部分是“向零取整”如7%
26、4的值为3%两侧均应为整型数据*不能写成第46页,共60页。第47张常量变量函数2.算术表达式和运算符的优先级与结合性+-*/运算符运算对象用算术运算符和括号将运算对象(也称操作数)连接起来的、符合c语法规则的式子.例如:a*b/c-1.5+a优先级:1.先按运算符的优先级别高低次序执行2.如果在一个运算对象两侧的运算符的优先级别相同,则按规定的“结合方向”处理。 结合性:1.左结合性:即运算对象先与左面的运算符结合2.右结合性:有些运算符的结合方向为“自右至左”.算术表达式第47页,共60页。第48张两种类型转换强制类型转换自动类型转换若x为float型,则“x%3”不合法,必须用:“(in
27、t)x%3”如3+6.53.强制类型转换运算符第48页,共60页。第49张一般形式:(类型名)(表达式)(int)(x+y)先将x与y相加,然后将他们的和转换成整型表达式应该用括号括起来(int)x+y只将x转换成整型,然后与y相加原来是这样!第49页,共60页。第50张例3.8强制类型转换。main() float x; int i; x=3.6; i=(int)x; printf(x=%f,i=%d“,x,i); x=3.600000, i=3在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化第50页,共60页。第51张4.自增、自减运算符+i先使i的值加1,然后再使用
28、ii+ 先使用i,然后再使i的值加1自增(减)运算符常用于:1.循环语句中,使循环变量自动加1或减1。2.指针变量,使指针指向下一个地址。自增运算符+-i先使i的值减1,然后再使用ii- 先使用i,然后再使i的值减1自减运算符-第51页,共60页。第52张i=3;printf(%d,+i);i=3;printf(%d, i +);i=3;j=+i; printf(%d,j);i=3;j= i+; printf(“%d”,j);4334自增运算符(+)和自减运算符(-),只能用于变量,而不能用于常量或表达式,+和-的优先级:第2级。+和-的结合方向是“自右至左”。5+(a+b)+不合法第52页,共60页。第53张3.9 赋值运算符和赋值表达式 1.赋值运算符赋值运算符就是“=”作用是执行一次赋值操作如a=3a=3+c优先级:第14级结合性:右结合性第53页,共60页。第54张整 型字 符 型无符号有符号字符的8位放到整型变量的低8位符号扩展高8位补零将低8位放到字符变量中,(截断)舍弃实数的小数部分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酒店保安服务管理制度
- 2026中国核工业集团有限公司校园招聘笔试备考题库及答案解析
- 2026年及未来5年市场数据中国高端水产养殖行业发展监测及市场发展潜力预测报告
- 劳务合同补充协议
- 2026年及未来5年市场数据中国鲜花行业市场全景分析及投资前景展望报告
- 煤制油生产工安全综合评优考核试卷含答案
- 中年男性职业规划指南
- 化工洗涤工岗前岗中技能考核试卷含答案
- 2026年及未来5年市场数据中国互联网+保险行业全景评估及投资规划建议报告
- 耐火配混料工岗前基础实操考核试卷含答案
- 龈上洁治术护理
- 幕墙施工危大工程专项方案专家论证
- 盆底超声在临床的应用
- 《夏桑菊颗粒中药企业工艺生产中的物料衡算案例》2100字
- 气化工艺计算(16K)
- 当水墨邂逅油彩(北京师范大学)知到智慧树章节答案
- DB52T 1512-2020 水利水电工程隧洞施工超前地质预报技术规程
- 国际货代英语 课件 Text 7 Packaging
- GB/T 31961-2024载货汽车和客车轮辋规格系列
- DL∕T 5210.4-2018 电力建设施工质量验收规程 第4部分:热工仪表及控制装置
- 神经源性肠道功能障碍的康复护理
评论
0/150
提交评论