C语言基的本数据类型与表达式.ppt

上传人:牧羊曲112 文档编号:6503810 上传时间:2023-11-07 格式:PPT 页数:34 大小:561KB
返回 下载 相关 举报
C语言基的本数据类型与表达式.ppt_第1页
第1页 / 共34页
C语言基的本数据类型与表达式.ppt_第2页
第2页 / 共34页
C语言基的本数据类型与表达式.ppt_第3页
第3页 / 共34页
C语言基的本数据类型与表达式.ppt_第4页
第4页 / 共34页
C语言基的本数据类型与表达式.ppt_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《C语言基的本数据类型与表达式.ppt》由会员分享,可在线阅读,更多相关《C语言基的本数据类型与表达式.ppt(34页珍藏版)》请在三一办公上搜索。

1、第 3 版,C语言程序设计教程,第 2 章 C语言的基本数据类型与表达式,2.1 C语言的基本数据类型 2.2 常量与变量 2.3 运算符与表达式 2.4 数据类型转换,教学目的和基本要求:,要求学生清楚数据类型与变量、常量的关系,掌握各种常量的性质和定义,掌握表达式中各种运算符的功能和特点,明白产生副作用的原因,了解数据类型的相互转换规则。,教学重点:,数据类型、常量定义,运算符与表达式。,存取数据必须先确定数据的编码方式、存储格式和所占的存储长度,C语言中把这三者结合起来,给出几种固定的形式,这些形式就是最基本的数据类型。,2.1 C语言的基本数据类型,为什么要设置数据类型?,在计算机中使

2、用一定长度的存储单元(通常是字节的倍数)来存储数据。,存储的编码方式有:原码、反码、补码、ASCII码。存储的存储格式有:定点型、浮点型。,其中,用于存储数据的存储单元的长度决定了数据取值范围的大小。,2.1.1 数据类型概述,本章中将对基本类型中的前三类进行介绍和学习。,变量:指以标识符为名字,其值可以改变的量。,在学习各种数据类型之前,我们先简单了解一下常量和变量的概念。后面的章节中将会详细介绍。,常量:指在程序运行中,其数值不能被改变的量。,变量 代表计算机内存中的某一存储空间,变量的类型决定了该存储空间的长度和其中存放数据的编码方式及存储格式。变量的类型也决定了该存储空间中存放数据的数

3、据形式和取值范围。,*八进制的数码范围为07;018*十六进制的数码除了数字09外,还使用英文字母a f(或A F)表示1015。如:0 x1e,注意!,2.1.2 整数类型,1、整型常量:,(1)十进制形式:与数学上的整数表示相同;例如:12,-100,0(2)八进制形式:在数码前加数字0;例如:012=1*81+2*80=10(十进制)(3)十六进制形式:在数码前加0X(数字0和字母X)。例如:0 x12=1*161+2*160=18(十进制),如Turbo C中,有 short(2字节)int(2字节)long(4字节)关键字 所占位数 取值范围 short 16-3276832767

4、unsigned short 16 065535 int 16-3276832767 unsigned 16 065535 long 32-21474836482147483647 unsigned long 32 04294967295,2、整型变量的分类:,根据数据所占的存储长度的不同分为:int、short、long;同样存储长度的数据又分unsigned、signed;故可组合出六种类型。,3、整型变量的值域:,由机器中数据的存储长度决定,思考:int a=20000,b=20000,c;c=a+b;c的值为多少?如果c定义为long型是否能解决问题?,2、实型变量的分类及值域:关键字

5、 字节数 取值范围 精度(位)float 4 3.410-38 3.41038 7 double 8 1.710-308 1.710308 15,注意,2.1.3 实数类型,1、常量:(1)十进制小数形式:由数字和小数点组成;例如:3.4,4.,.3。(2)指数形式:“十进制小数”+“e(或E)”+“十进制数整数”。例如:12.5e-6 表示12.510-6。,小数点不能单独出现;0.0.e或E的两边必须有数,且其后面必须为整数;如:6E0.2 e5,字符形式 功能 n 换行 t 横向跳格 b 退格 r 回车 反斜杠字符 单引号字符 ddd 8进制数表示的ASCII码对应的字符 xhh 16进

6、制数表示的ASCII码对应的字符,2.1.4 字符类型,1、常量:(1)用单引号括起来的一个字符;如:A、1、?等。(2)用单引号括起来的由反斜杠()引导的转义字符。,4、字符串常量:是用一对双引号括起来的字符序列。注意:每个字符串的后面都有一个0结束符。如:“SHANGHAI”,“AbcdeFGHijk”,“How are you”。,注意,a与“a”的区别。,例如:字符A的ASCII码为:65D(十进制)=41H(十六进制)=101Q(八进制)字符A可以表示为A、x41、101。,2、字符型变量的分类:char 和 unsigned char;,3、值域(字符型可参与数学运算,也可看成一种

7、一字节的整型变量)每个字符型数据在内存中占一个字节;包括ASCII字符表中的所有字符(可显示字符和非显示字符)。,2.2.1 常量与符号常量 常量是指在程序运行中,其数值不能被改变的量。常量又可分为直接常量和符号常量。,2.2 常量与变量,120、-100、0;0120、072;0 xFFFF、0 x1e、0X28AF,0XED4;120L,200L;长整型常量 3.14、-3.1、5.12E-6;a、#、n、101;099、12f、0 xg、48EA;019.5、1e-08;实型常量只能用十进制形式表示 2.1E10.2、E-6、6.4E+4.8、E9;changsha、+?ab;、p、ab

8、;,1、直接常量:是在程序中直接引用的数据。,请判断这些常量正确与否:,定义形式:#define 标识符 常量数据 例如:#define PI 3.14159 在程序预处理时,凡是出现标识符PI的地方都将用数据3.14159来替换。如:2*2.3*PI 就等价于 2*2.3*3.14159。,变量是指以标识符为名字,其值可以改变的量。变量代表计算机内存中的某一存储空间,该存储空间 中存放的数据就是变量的值。在同一程序块中,变量不能被重复定义。使用变量时必须“先定义,后使用”。,2、符号常量 是用标识符来表示一个数据;在程序不能给它赋值。,2.2.2 变量与变量定义,2、变量赋初值 在定义变量的

9、同时给变量一个初始值。,注意,int a=5,b=3;int a=b=c=3;int a,b,c;a=b=c=3;,例如:int a,b,c;float x,y;char c1,c2;或 int c1,c2;定义变量就是在内存中划出一块相应类型的存储空间存放该变量的值。,main()int x,y,z,w;/*定义x,y,z,w为整型变量*/unsigned int k;/*定义k为无符号整型变量*/x=10;y=-20;k=30;z=x+k;w=y+k;printf(“x+k=%d,y+k=%dn”,z,w);,例2-1 整型变量定义及赋初值,程序运行结果为:x+k=40,y+k=10,3、

10、变量的作用域 变量根据作用域的不同可分为局部变量和全局变量,根据存储方式的不同可分为静态存储变量和动态存储变量,这些我们将在第六章中详细介绍。,在数学里当多个运算符一起组成一个表达式时,我们规定了优先级(先乘除后加减)和结合规则(从左至右)。同样,在C语言中,我们也规定了每个运算符的结合规则及运算符之间的优先级。,2.3 运算符与表达式,运算符:就是表示某种运算功能的符号。按操作功能运算符大致可分为:算术运算符、关系运算符、逻辑运算符、赋值运算符、条件运算符、逗号运算符以及按位运算符等。,表达式:是由操作数和运算符组成的序列。如:1+2*3-4、35-7、a=b%2 等都是C语言中的表达式。,

11、下面分类介绍各种运算符:,%(取余)(注意:取余运算的操作数只能是整数,且结 果的符号与前一操作数的符号相同),2.3.1 算术运算符与算术表达式,1、运算符+(加):3+4、+3-(减):3-5、-5*(乘):3*5/(除):5/2、5.0/2(注意,此二种形式,结果不同),5%3的值为2;-5%3的值为-2;5%(-3)的值为2;-5%(-3)的值为-2;12.3%3 若a%b 的结果为0,则有a能被b整除,2、算术表达式用算术运算符和括符将操作数连接起来的式子。优先级:()*、/、%+、-结合性:从左至右;表达式的值:数值型(int、long、unsigned、float、double)

12、;,例如:已知:float a=2.0;int b=6,c=3;求解:a*b/c-1.5+a+fabs(-5)=?,float a=2.0;int b=6,c=3;a*b/c-1.5+a+fabs(-5),12.0/3,5,4.0-1.5,2.5+97(int),99.5+5,104.5(double),思考 int a=1,b=2;表达式a/b+3的结果是多少?int a=10000,b=30000;表达式a+b的结果是多少?如何修改?,等价于:j=i;i+;所以i的值为4,j的值为3,等价于:i+;j=i;所以i的值为4,j的值为4,(1)i=3;j=i+;(2)i=3;j=+i;,自增与

13、自减运算符(+、-),+i,-i:使用之前使i的值增1(或减1);,i+,i-:使用之后使i的值增1(或减1);,分析下面几种情况中i与j的值:,当+、-不与其他运算符混合使用时,+i与i+都等价于 i=i+1,-i与i-都等价于 i=i-1,如:i=2;j=-i+;求执行完这两句后i与j的值分别是多少,特殊的:设i=3,j=4,k=i+j,k=i=j=,结合性:自右至左。,分析:“+”与”-“是同优先级,且都高于“=”按结合规则,等价于:j=-(i+);结果:i的值为3,j的值为-2。,再看几个例子:如:设i=3,k=(i+)+(i+)+(i+)k=i=,9,6,如:设a=3,b=(a+)+

14、(a+)b=a=,6,5,设a=3,b=(+a)+(a+)b=a=,8,5,设a=3,b=(a+)+(+a)b=a=,8,5,设a=3,b=(+a)+(+a)b=a=,10,5,7,4,4,例如:(1)x=(y=12)/4(2)x=y=12/4(3)x=(y=12/4)(4)(x=y)=12/4,2.3.2 赋值运算符与赋值表达式,1、赋值运算符=(执行功能:把=右边的表达式的值,存入=左边的变量对应的存储空间,即给此变量赋值)3=2+1 a=a+2,2、赋值表达式:用赋值运算符将变量和表达式连接起来的式子 形式:=求值规则:将“=”右边表达式的值赋给左边的变量。优先级:!算术关系&|赋值 结

15、合律:自右至左;表达式的值:被赋值变量的值。,y值为12,x值为3,表达式的值为3,y值为3,x值为3,表达式的值为3,y值为3,x值为3,表达式的值为3,练习:设a=12,计算表达式a+=a-=a*12和a+=a-=a*=12的值,3、复合赋值运算符*=、/=、%=、+=、-=,=,&=、=、=复合运算符是一个运算符,但功能上,是两个运算符功能的组合。,例如:a+=b 相当于 a=a+b a*=b 相当于 a=a*b,注意:a*=b+c 相当于 a=a*(b+c)而不是 a=a*b+c,优先级:与=是同一优先级。结合律:自右至左;表达式的值:被赋值变量的值。,-264,0,1、逗号运算符和逗

16、号表达式 形式:表达式1,表达式2,表达式n 求值规则:从左至右依次计算各表达式的值;优先级:最低;结合性:自左至右;表达式的值:最后一个表达式的值。,2.3.3 逗号运算符和求字节运算符,例如:a b y 表达式 y=a=4,b=5,a+b;y=(a=4,b=5,a+b);y=(a=4,b=5),a+b;y=a=(4,b=5),a+b;,4,5,4,9,4,5,9,9,4,5,9,5,5,5,5,10,形式有两种:sizeof 变量名 sizeof(类型名)结果为整型数。,int a;float x;printf(“%d,%d”,sizeof a,sizeof x);printf(“%d,%

17、d”,sizeof(int),sizeof(float);以上两个printf语句结果均为。,例如,2、求字节运算符:sizeof 作用:求得变量或某种数据类型所需的字节数。,2,4,求值规则:先求解表达式1的值 若为真(非0),求解表达式2,并把表达式2的值 作为整个条件表达式的值 若为假(0),求解表达式3,并把表达式3的值作 为整个条件表达式的值,2.3.4 条件运算符?和:,它们与三个操作数组组成三元运算。形式为:?:,优先级:逻辑条件赋值,结合性:自右至左;,又如:y=x10?x/10:x0?x:-x 当x的值为整型的15时,表达式的结果为:当x的值为整型的5时,表达式的结果为:,1

18、,5,例如:int max,a=5,b=3;max=ab?a:b 求max的值,max的值为5,C语言允许整型、实型、字符型数据进行混合运算。有3种转换方式:自动转换、赋值转换和强制转换。2.4.1 类型自动转换,2.4 数据类型转换,特点:由数值存储位数少的向多的转换;整型向实型转换!操作数为相同类型的不转换,仍取原类型,特别注意此时可能带来的错误!,int x=2;float y=1.6;char c=A;则:c+1/x*y=,例如,char c=68.5;printf(“%c”,c);,65(int)+0(int)*1.6(float),65(float),2.4.2 赋值转换 在赋值时

19、将赋值符右边值的类型转换成与其左边变量类型一致的类型。,有下列几种情况:(1)将整型数据赋给单、双精度变量时,数值不变。(2)实型 整型(字符型):去掉小数部分;,(3)字符型 整型:字符型数据只占一个字节,而整型变量占两个字节,因此将字符数据放入到整型变量低8位中,整型变量高8位视计算机系统处理有符号量或无符号量两种不同情况,分别在高8位补上1或补上0。(4)将带符号的整型数据(int)赋给long int 型数据变量时,要进行符号扩展。(5)将unsigned int型数据赋给long int型数据变量时,不存在符号扩展,只需将高位补0即可。,例如:int a=2,b=5;float x=4.4;则有:表达式 结果 b/a(float)b/a(float)(b/a)(int)x%a+x(int)x%(a+x),2.4.3 强制类型转换 形式:(类型名)(表达式)强制类型转换时,得到所需类型的中间变量,原来变量的类型不会改变。,2,2.5,2.0,4.4,本章结束,再见!,同学们:,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号