第3章数据类型运算符与表达式.ppt

上传人:sccc 文档编号:5643191 上传时间:2023-08-05 格式:PPT 页数:46 大小:577.51KB
返回 下载 相关 举报
第3章数据类型运算符与表达式.ppt_第1页
第1页 / 共46页
第3章数据类型运算符与表达式.ppt_第2页
第2页 / 共46页
第3章数据类型运算符与表达式.ppt_第3页
第3页 / 共46页
第3章数据类型运算符与表达式.ppt_第4页
第4页 / 共46页
第3章数据类型运算符与表达式.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《第3章数据类型运算符与表达式.ppt》由会员分享,可在线阅读,更多相关《第3章数据类型运算符与表达式.ppt(46页珍藏版)》请在三一办公上搜索。

1、第3章 数据类型、运算符与表达式,C程序设计,本章要点 数据的描述规则 数据的操作规则,主要内容C的数据类型(3.1)常量与变量(3.2)整型数据(3.3)浮点型数据(3.4)字符型数据(3.5)变量赋初值(3.6)各类数值型数据间的混合运算(3.7)算术运算符和算术表达式(3.8)赋值运算符和赋值表达式(3.9)逗号运算符和逗号表达式(3.10),C语言的数据类型(3.1),一个程序应包括两个方面的内容:对数据的描述:数据结构(data structure)对操作的描述:算法(algorithm)著名计算机科学家N.Wirth提出一个公式:数据结构+算法=程序完整的程序设计应该是:数据结构算

2、法程序设计方法语言工具,C语言的数据类型(3.1),数据:程序处理的对象。数据类型:用以描述数据,每种数据类型决定:该类型数据的存储方式:所占用的存储空间长度(字节数)在内存中的表示方式。该类型数据的取值范围对该类型数据所允许的操作在程序中数据为各种数据类型的常量和变量。,C语言的数据类型(3.1),C语言的数据类型:,常量与变量(3.2),标识符(3.2.2)标识符(identifier):标识变量、常量、函数、数组、类型等的有效字符序列。作用:用来为变量、常量、函数、数组、类型等命名。组成规则:只能由字母、数字和下划线组成,且第一个字符必须是字母或下划线。长度限制:依不同的编译系统而异。注

3、意:标识符区分大小写字母不能使用关键字作标识符(关键字见附录B)不宜混淆:如l与I,o与0注意长度限制命名原则:见名知意,常量与变量(3.2),标识符(3.2.2)例:判断下列标识符号合法性sum Sum D.John day Date 3days book_price-123 list_1_2$123char a=b _above,常量与变量(3.2),常量(3.2.1)常量:在程序运行过程中,其值不能被改变的量。C语言的常量分直接常量和符号常量。直接常量(字面常量):从其字面形式可判别。整型常量 例:100,12,-100,0实型常量 例:3.14,0.125,-3.789,0.0字符型常

4、量 例:a,b,2,+字符串常量 例:a,ab,1232,常量与变量(3.2),常量(3.2.1)符号常量:用标识符表示的常量。定义格式:#define 标识符 常量例:#define PI 3.14#define LENGTH 10注意:#与define之间可加或不加空格,最后不能加分号。用法:定义一个符号常量之后,程序中凡出现该标识符均代表相应的常量。例3.1 符号常量的使用,/例3.1#define PRICE 30#include void main()int num,total;num=10;total=num*PRICE;printf(total=%dn,total);,说明:符号

5、常量的值不可改变符号常量的标识符习惯上用大写关于编译预处理命令使用符号常量的好处:含义清楚,修改方便。,常量与变量(3.2),变量(3.2.2)变量:在程序运行过程中,其值可以被改变的量。变量名与变量值变量名用标识符表示,用以标识变量。变量值为变量表示的数据,可以改变。变量与存储空间一个变量代表内存中具有特定属性的一个存储空间,它用来存放数据,即相应变量的值。变量某存储空间 变量值相应存储空间中的数据 变量的地址相应存储空间的首地址,常量与变量(3.2),变量(3.2.2)变量的定义:指定变量的数据类型。为何要定义变量?一般格式:数据类型 变量1,变量2,变量n;注意:变量应先定义后使用。一个

6、变量不能重复定义。变量取名遵循见名知义的原则。变量名中一般用小写字母。,常量与变量(3.2),变量(3.2.2)变量的赋值:将数据存入变量所对应的存储空间。赋值运算符:=赋值的一般形式:变量=表达式例如:a=100;x=3.5;i=i+1;,整型数据(3.3),计算机中数的表示及进制数码、基与权数码:表示数的符号基:数码的个数权:每一位所具有的值数制,十进制:4956=410+910+510+610,二进制:1011=12+02+12+12,十六进制:81AE=816+116+1016+1416,八进制:4275=48+28+78+58,整型数据(3.3),计算机中数的表示及进制字节和位每个二

7、进位的值是0或1一个字节由8个二进制位组成内存以字节为单元组成一般每个字节有一个地址数据在计算机中以二进制形式存储数值以补码表示(关于补码的知识在其它课程中学习)有符号数符号的表示:最高位0-表示正数 最高位1-表示负数表示的数值范围:n位二进制表示的范围 有符号整数:-2n-12n-1-1 无符号整数:02n-1,整型数据(3.3),整型常量(3.3.1)整型常量(整常数)的形式十进制整数 例:123,-456,0八进制整数:由数字0开头。例:011,-0123十六进制整数:由0 x或0X开头。(0 x中是数字0)例:0 x123,0Xff,-0 x11计算下列整常数的十进制值:011-01

8、2-0 x11 0Xff整型常量的类型根据其值所在范围确定其数据类型在整常量后加限定词l或L、U或UL,认为它是long int 型或无符号整型、无符号长整型常量,整型数据(3.3),整型变量(3.3.2)整型变量的分类分3类:基本整型:int短整型:short int长整型:long int根据是否有符号,分6种:有符号基本整型:signed int无符号基本整型:unsigned int有符号短整型:signed short int无符号短整型:unsigned short int有符号长整型:signed long int无符号长整型:unsigned long int整数类型的长度和取

9、值范围长度:shortintlong(具体长度依计算机系统而异)取值范围依长度而定,整型数据(3.3),整型变量(3.3.2)整型变量的定义一般格式:整数类型 变量1,变量2,变量n;例:int a,b;(定义整型变量、)unsigned short c,d;(定义无符号短整型变量、)long e,f;(定义整型变量、),整型数据(3.3),整型变量(3.3.2)整型变量的定义例3.2 整型变量的定义与使用#include void main()int a,b,c,d;/*指定a、b、c、d为整型变量*/unsigned u;/*指定u为无符号整型变量*/a=12;b=-24;u=10;c=a

10、+u;d=b+u;printf(a+u=%d,b+u=%dn,c,d);,输出结果:a+u=22,b+u=-14 说明:可以看到不同种类的整型数据可以进行算术运算。,整型数据(3.3),整型变量(3.3.2)整型数据的溢出一个整型变量的值若超出其数据类型的取值范围,则出现溢出,此时将得到不正确的值。为何会溢出?例3.3 整型数据的溢出(修改后的例子)#include void main()short a,b;a=32767;b=a+1;printf(%d,%dn,a,b);,输出结果:32767,-32768 注意:C语言编译时不检查溢出,程序设计时要注意避免数据溢出。,实型(浮点型)数据(3

11、.4),实型常量(3.4.1)实型常量也称实数或浮点数。实型常量的表示形式十进制数形式:(必须有小数点)如 0.123,.123,-123.0,0.0,123.指数形式:(e或E之前必须有数字;指数必须为整数)如 12.3e3,123E2,1.23e-4,-1e10为何用指数形式?判别合法的指数形式的浮点数:0E1-0.1234e12 e-5 1e-10 1.2E-3.5 1.2e.e3 规范化的指数形式:小数点左边有且仅有一位非零数字。例:2.378e2 3.0999E5 6.46832e12实型常量的类型C编译系统将实型常量作为双精度来处理。后面加f或F则作为单精度处理。,实型(浮点型)数

12、据(3.4),实型变量(3.4.2)浮点型数据在内存中的存放形式 浮点型数据是按照指数形式存储的。系统把一个浮点型数据分成小数部分和指数部分,分别存放。指数部分采用规范化的指数形式。,小数部分所占位数越多,数据的精度越高,指数部分所占的位数越多,数据的取值范围越大。,实型(浮点型)数据(3.4),实型变量(3.4.2)实型变量的分类 分3类单精度:float双精度:double长双精度:long double实型数据的长度、精度和取值范围,实型(浮点型)数据(3.4),实型变量(3.4.2)实型变量的定义 例:float x,y;double z;实型数据的舍入误差对实型数据运算时注意数据的精

13、度,控制由于精度限制导致的舍入误差。例3.4 浮点型数据的舍入误差,/例3.4 浮点型数据的舍入误差#include void main()float a,b;a=123456.789e5;b=a+20;printf(%fn,b);,输出结果:?,字符型数据(3.5),字符常量(3.5.1)一般的字符常量:单引号括起来的一个字符。例:a,A,2,#转义字符:以开头的特殊字符。转义字符及其作用(表3-3 P48)例:n 换行t 横向跳格r 回车 反斜杠ddd 1到3位八进制数所代表的字符xhh 1到2位十六进制数所代表的字符为何用转义字符?例:转义字符的使用,/例:转义字符的使用#include

14、 void main()printf(I say:How are you?n);printf(C Programn);printf(ab ct derftgn);printf(“Yb=n”);,屏幕上的显示结果:I say:How are you?C Programf gde=,打印结果:I say:How are you?C Programfab c gde,字符型数据(3.5),字符变量(3.5.2)字符型变量用来存放字符,注意只能放一个字符。字符类型标识符:char字符变量的定义形式如下:char c1,c2;字符数据在内存中的存储形式(3.5.3)一个字符型数据在内存中占一个字节,存储

15、字符的ASCII码二进制形式。ASCII码共256个,见附录A。例:char c1,c2;c1=a;c2=b;,字符型数据(3.5),字符数据和整型数据的通用性字符数据可以当作整型数据运算,即对其ASCII码运算。在ASCII码范围内的整数也可当作字符数据,即对ASCII码对应的字符运算。为何可通用?应用示例例3.6 向字符变量赋以整数。例3.7 大小写字母的转换。,例3.6 向字符变量赋以整数。#include void main()char c1,c2;c1=97;c2=98;printf(“%c%cn”,c1,c2);printf(“%d%dn”,c1,c2);,/例3.7 大小写字母的

16、转换#include void main()char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(c c,c1,c2);,输出结果:a b97 98,输出结果:A B,字符型数据(3.5),字符串常量(3.5.4)表示形式:用双引号括起来的字符序列。How do you do.,CHINA,a,$123.45,%dn字符常量与字符串常量的区别a与 a 是否相同?abc是否是字符串常量?是否是字符串常量?字符串的存储形式:存储时每个字符串末尾自动加一个 0 作为字符串结束标志。例:,字符型数据(3.5),字符串常量(3.5.4)字符串常量的应用可以输出一个字

17、符串,如 printf(How do you do.);不能把一个字符串常量赋给一个字符变量。如:C语言中没有字符串变量,通过字符数组实现字符串变量的功能。,变量赋初值(3.6),变量赋初值变量初始化:为变量赋初值。语言允许在定义变量的同时使变量初始化。例如:int a=3;/指定为整型变量,初值为3。等价于 int a;a=3;float f=3.56;/指定为浮点型变量,初值为.56。char c=a;/指定为字符变量,初值为a。可以使被定义的变量的一部分赋初值。例如:int a=1,b,c=5;/指定a,b,c为整型变量,a的初值为1,c的初值为5。如果对几个变量赋以同一个初值,应写成:

18、int a=3,b=3,c=3;不能写成:int a=b=c=3;,数值型数据间的混合运算(3.7),混合运算以下类型的数据可以混合运算整型(int,short,long)实型(float,double)字符型(char)混合运算时,不同类型的数据要先转换成同一类型,然后进行运算。类型转换规则:低级类型高级类型(转换是由系统自动进行的),算术运算符和算术表达式(3.8),C语言运算符(3.8.1),运算符的详细内容见附录C。,算术运算符和算术表达式(3.8),算术运算符和算术表达式(3.8.2)基本的算术运算符:+(加法运算符,或正值运算符)如:3+5、+3-(减法运算符,或负值运算符)如:5

19、-2、-3*(乘法运算符)如:3*5/(除法运算符)如:5/3%(模运算符,或称求余运算符)如:7%4说明:两整数相除,结果为整数。%两侧均应为整型数据。,例 1/2=-5/2=-5/2.0=,例 5%2=-5%2=5%-2=1%10=5%1=5.5%2=,0-2-2.5,1-1110,算术运算符和算术表达式(3.8),算术运算符和算术表达式(3.8.2)算术表达式用算术运算符和括号将运算对象(也称操作数)连接起来的、符合语法规则的式子,称为算术表达式。运算对象包括常量、变量、函数等。一个常量、变量都可作为一个表达式。例:以下是合法的算术表达式:a*b/c-1.5+a(x+y)%(x+b-c/

20、d)100 x运算符的优先级与结合性表达式的求值规则:不同优先级运算符的按从高到低的顺序运算相同优先级运算符的按结合方向的顺序运算运算符的优先级与结合性见附录C。,算术运算符和算术表达式(3.8),算术运算符和算术表达式(3.8.2)算术运算符的优先级与结合性结合方向:从左至右优先级,例:a*b/c-1.5+a(x+y)%(x+b-c/d),算术运算符和算术表达式(3.8),算术运算符和算术表达式(3.8.2)强制类型转换运算符强制类型转换运算符将一个表达式的值转换成所需类型。一般形式:(类型名)(表达式)例如:(double)将转换成double类型(int)(x+y)将x+y的值转换成整型

21、(float)(5%3)将5%3的值转换成float型注意:表达式应用括号括起来。比较:(int)x+y 和(int)(x+y)强制转换得到所需类型的中间变量,原变量类型不变。如 int x;double y;y=(double)x;较高类型向较低类型转换时可能发生精度损失或出错,应避免。如 int a=1000;char c;c=(char)a;,算术运算符和算术表达式(3.8),算术运算符和算术表达式(3.8.2)强制类型转换运算符例3.8 强制类型转换。#include void main()float x;int i;x=3.6;i=(int)x;printf(x=%f,i=%dn,x

22、,i);输出结果:x3.600000,i=3,算术运算符和算术表达式(3.8),算术运算符和算术表达式(3.8.2)自增、自减运算符作用自增运算符+:使变量的值增1自减运算符-:使变量的值减1两种形式前缀形式:+i,-i(在使用i之前,先使i的值加1(减1)前缀形式:i+,i-(在使用i之后,再使i的值加1(减1)例:j=+i;j=i+;等价于 等价于 i=i+1;j=i;j=i;i=i+1结合方向与优先级:+,-的结合方向:从右至左+,-的优先级:,例:int j=5,i=1,k,n;n=-+i;k=-j*2;,算术运算符和算术表达式(3.8),算术运算符和算术表达式(3.8.2)自增、自减

23、运算符注意:前缀形式与后缀形式功能上的区别。例:j=3;k=+j;j=3;k=j+;j=3;printf(%d,+j);j=3;printf(%d,j+);a=3;b=5;c=(+a)*b;a=3;b=5;c=(a+)*b;,+和-不能用于常量或表达式。例:5+,-(x+y)是非法的。,+和-有副作用。例:i+j printf(%d,%d,i,i+);,不要滥用+和-!,赋值运算符和赋值表达式(3.9),赋值运算符简单赋值运算符:=作用:将一个数据赋给一个变量,即将数据存入变量对应的存储空间。例:a=1 b=x*2+1复合赋值运算符种类:+=-=*=/=%=&=|=含义:exp1 op=exp

24、2 exp1=exp1 op exp2例:,赋值运算符和赋值表达式(3.9),赋值运算符结合方向和优先级结合方向:从右至左优先级:,赋值运算符和赋值表达式(3.9),赋值表达式赋值表达式:由赋值运算符将一个变量和一个表达式连接起来的式子。一般形式:例:x=1 a=(a+1)/(b-c)x+=a*b求值过程:1.求赋值运算符右侧的表达式的值;2.将该值赋给赋值运算符左侧的变量。(若是复合赋值运算符,这将该值按复合赋值运算符的规则运算后赋给左侧的变量。)赋值表达式的值:求值后赋值运算符左侧的变量的值。例:int a=5,b=3,c=1;a=(a+1)/(b-c)b*=c+1,赋值运算符和赋值表达式

25、(3.9),赋值表达式说明:赋值运算符左边必须是变量,不能常量或表达式。例:5=a a+b=3当赋值运算符两边数据类型不一致时,右边表达式的值自动转换为左边变量的类型。例:int a;char c=a;double x;a=c;x=a+1;赋值表达式可以嵌套,运算时注意运算符的优先级和结合方向。,例:a=b=c=5 a=(b=5)a=5+(c=6)a=(b=10)/(c=2)a+=a-=a*(a=1),不要滥用嵌套,注意适当地加括号。,赋值运算符和赋值表达式(3.9),不同类型数据的赋值转换当赋值表达式两边数据类型不一致时,系统自动进行类型转换。较低类型的数据转换成较高类型时,值不改变。较高类

26、型的数据转换成较低类型时,有可能值会改变,从而引起精度损失或得到不正确的结果。系统不检查由于此类转换而产生的错误,应注意避免。例:int j=500;char c=a;double x=1234567890.123;float y;j=c;x=y;,c=j;y=x;,逗号运算符和逗号表达式(3.10),逗号运算符运算符:,作用:连接两个表达式。优先级:最低结合方向:从左至右逗号表达式一般形式:表达式1,表达式2,表达式n例:i=1,j=0 x/(y+1),a+b,3*4求值过程:从左至右依次求表达式1,表达式2,表达式n的值,最后一个表达式的值为整个逗号表达式的值。例:x=(a=3,6*3)注意:逗号运算符优先级最低,要注意加括号。例:比较 x=(a=3,6*3)与 x=a=3,6*3并不是任何地方出现的逗号都是作为逗号运算符。例如函数参数也是用逗号来间隔的:printf(%d,%d,%d,a,b,c);,应用运算符和表达式应注意运算符功能运算符与运算对象的关系要求运算对象的个数要求运算对象的类型运算符的优先级运算的结合方向 运算结果的类型混合运算中的类型转换,

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号