第3章数据类型表达式.ppt

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

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

1、第3章 最简单的C程序设计(1)数据类型、运算符与表达式,一、C语言的保留字和标识符二、基本数据类型 1、常量和变量的概念 2、整型、浮点型、字符型、字符串 3、变量的初始化 三、算术运算符和算术表达式四、自增、自减运算符五、赋值运算符和赋值表达式六、表达式中不同数据类型的混合运算七、补充:逗号运算符和逗号表达式,一、C语言的保留字和标识符,保留字:C语言规定的具有特定意义的字符串,也称关键字。C语言的保留字(关键字)共有32个(C89)教材365页 附录B C语言中的关键字(第3版)C语言的保留字(关键字)共有37个(C99)教材378页 附录C C语言中的关键字(第4版),标识符:用来标识

2、变量名、符号常量名、数组名、类型名、函数名等的有效字符序列。,C语言对标识符的规定:,(1)只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线(2)长度:在TC中最多允许32个字符,建议不要超过8个VC:255,例:如果系统规定标识符长度为8,那么x1234567ABC和x1234567XY会被视为同一标识符。,标识符中应注意的问题:,标识符命名时应有意义,尽量做到见名知义。如longth用来表示长度,time用来表示时间,PI用来表示圆周率。,在C语言中,标识符大小写敏感。如ABC、aBC、abc分别代表3种不同的标识符,标识符不能与C语言的保留字、系统标准库函数同名。,为合法标识

3、符,yes?123 go to a_80%if,program to_ _to file_2 ab1_c3,为非法法标识符,(含有不合法字符“?”),(出现非法字符“”),(标识符中不允许有空格),(第一个字符不能为数字),(与关键字相同),二、基本数据类型(第3版 C89),二、基本数据类型(第4版 C99),派生类型,数组类型(),结构体类型(struct),共用体类型(union),函数类型,枚举类型(enum),复数浮点型(float_complex,double_complex,long long_comple),基本整型(int),短整型(short int),长整型(long i

4、nt),*双长整型(long long int),字符型(char),*布尔型(bool),1、常量和变量的概念,常量:在程序执行的整个过程中,其值不能改变 的量。,字面常量或直接常量:直接以值的形式出现的常量,如100(整型常量),0.5(实型常量),a(字符常量),”boy”(字符串常量).,符号常量:用标识符表示的常量,#define PRICE 30void main()int num,total;num=10;total=num*PRICE;printf(“total=%d”,total);,定义符号常量PRICE,代表30,哪些是保留字?哪些是标识符?,变量:在程序执行的过程中,其

5、值可以改变的量。,如 y=x+5;其中x和y都是变量,y随着x的值不同而不同,注意:变量代表内存中具有特定属性的一个存储单元,用来存放数据,即变量的值。,x,10,存储单元,即变量,变量名:存储空间的名字,通过它对存储空间进行访问,是一个标识符,通常用小写字母表示,变量的值:存储单元中存储的数值。变量x的值是10,变量类型:决定存储单元的大小 整型变量、实型变量、字符型变量等,变量的特征:变量名、变量的值、变量的类型,注意:C语言规定:变量必须先定义,后使用。,变量的定义语句:类型说明符 变量名1,变量名2,;,例:int x;定义整型变量x int a,b;定义两个整型变量a,b,类型说明符

6、和变量名之间要用空格隔开,注意:以下变量定义形式是错误的 int a,int b;int a;b;,2、整型,1)整型常量十进制整型:能出现数字09,可带正负号 如:0,11,95,-2八进制整型:以数字0开头的数字串,能出现数字07 如:011(十进制9),0111(十进制73)十六进制整型:以0 x开头的,能出现数字09,字母af或AF 如:0 x11(十进制17),0 xa5(十进制165),下列常量错在哪儿?028、123a、o12,2)整型变量,说明:数据类型所占字节数随编译系统的不同而不同,24,整型数据在内存中以补码表示,对有符号数,最高位为符号位,其余位为数值位eg:用一字节表

7、示有符号数:,对无符号数unsigned,全部位都为数值,整型变量举例:,为了保存年龄:short age;或unsigned short age;int age;long age;,为了保存一个城市人口:int people;或long people;unsinged people;unsigned long people;,要保存全球的人口:int count;,60亿,超出int或long类型的范围,整型变量举例:,#include void main()int i,j;/*定义整型变量i,j*/i=1;/*分别给整型变量i,j赋值*/j=2;printf(“i=%d,j=%d”,i,j

8、);/*按十进制格式输出整型变量i,j的值*/,注意:整型常量也分类别 如:100,是int型常量 123u,89U,是unsigned型常量 0l,34L,是long int型常量 参考P41 整型变量的分类(第3版)参考P44 整型变量的分类(第4版),3、浮点型(实型),十进制小数形式:由数字与小数点组成(必须有小数点)。如 1.23,-123.,0.0123,.0,0.指数形式,如123e3或123E3都代表123103注意字母e或E之前必须有数字,后面必须是整数,1)浮点型常量,E-5,.1234e1.2,6.5E,为合法的浮点型常量,为非法的浮点型常量,如:1E-5,.1234e1

9、2,2.e0,6.5E-15,2)浮点型变量,实型变量举例:,保存商品的单价,总价:float price,total;保存精确的计算结果,精确到10位有效数字:double result;,浮点型变量举例:,#include void main()float a,b;/*定义单精度浮点型变量a,b*/double c;/*定义双精度浮点型变量c*/a=123.45;/*分别给浮点型变量a,b,c赋值*/b=32.56;c=123.45;printf(“a=%f b=%f c=%f”,a,b,c);/*输出a,b,c的值*/,注意:浮点型常量也分类别:如:123.3,是double类型 34.

10、5f,8.9F,是float类型,4、字符型,1)字符常量:分为两类用单撇号括起来的一个字符 如:a,9,(空格)是合法字符常量”a”,99 是非法字符常量,转义字符:以(反斜杠)开头的特殊形式的字符。,如:n,r,123,x3b,转义字符 功 能 n 回车换行符,光标移到下一行行首 r 回车不换行,光标移动到本行行首 t 横向跳格(8位为一格,光标跳到下一格起始位置,如第9或17位等)b 退一格,光标往左移动一格 f 走纸换页,将当前位置移到下页开头 用于输出反斜杠字符“”用于输出单引号字符“”用于输出双引号字符“”ddd 1到3位八进制数ddd对应的ASCII码字符 xhh 1到2位十六进

11、制数hh对应的ASCII码字符 a 警告,产生声音或视觉信号?一个问号(?),输出此字符 v 垂直制表符,将当前位置移到下一个垂直制表对齐点,课堂练习,183 w“b”x1b正确的字符常量是:,正确的是:x1b,不能有8,没有这样的转义字符,字符常量不用双引号,2)字符变量:char,占1个字节空间,只能存放一个字符。,存储特点:在字符变量中实际上存储的是字符的ASCII码,其存储形式与整数的存储形式相同。,例如:char c1,c2;c2=a;定义了字符型变量c1,c2,把a存放到c2中,如 A65,B 66,Z 90 a97,b98,z122 048,149,957,注意:1.字符数据与整

12、型数据可相互赋值,直接运算。,例 int a,x;char c;a=D;/*a=68;*/x=A+5;/*x=65+5;*/s=!+G/*s=33+71;*/c=97;/*c=a;*/,2.大小写字母转换小写字母减32得到相应的大写字母,如:a-32 得到A大写字母加32得到相应的小写字母 如:B+32 得到b,3.字符1和整数1是不同的概念:字符1只是代表一个形状为1的符号,在需要时按原样输出,在内存中以ASCII码形式存储,占1个字节1是十进制整数,是int型整数,字符常量与字符串常量不同,5、字符串常量定义:用一对双撇号(”)括起来的字符序列。如:”hello”Mary”aaan”存储:

13、每个字符串尾自动加一个 0 作为字符串结束标志,例:char ch;ch=”A”;,练习:printf(”Youre my good friend!”n”);在显示器上输出什么?,”Youre my good friend!”,5、变量赋初值,格式:类型说明符 变量1=常数1,变量2=常数2,;例:int a=2;float data=3.67;char ch=A;int x=1,y=1,z=1;int x=y=z=1;(语法错误)int m=10,n;(被定义的变量的一部分赋初值),变量赋初值是指在定义变量时给变量赋值,这个值称为变量的初值。,三、算术运算符和算术表达式,1、算术运算符:算术

14、运算符用于各类数值运算。基本的算术运算符:、(正、负号运算符)、*、/、%(取余),只需要一个运算对象,单目运算符,除法运算符“/”进行求商运算。对于不同类型的运算对象,除法表达式计算结果的类型也会不同。,例:计算x/y如果x,y是整型,则结果为整型,小数部分被略去。5/2结果为2,整型量 2/5结果为0,整型量如果x,y其中一个为浮点型量,则结果为浮点型5.0/2.0结果为2.5,“”是求余运算。ab计算a除以b后的余数,也是a模b的值。它要求两个运算对象必须是整型,其结果也是整型量。,例:52结果为1 25结果为2 10%3.0 语法错误,扩充:%和/的非常常用的用法:求一个整数各位上的数

15、字。例如:对任意一个三位数n,分别求出个、十、百位上的数字。eg:n=456 个位:456%10 得到 6 十位:456/10%10(或456%100/10)得到5 百位:456/10/10(或456/100)得到4,2.算术表达式用算术运算符和括号将运算对象(操作数)连接起来的、符合C语法规则的式子,称为C算术表达式。如:1+3.5*2-10(x+y)*3-6+a表达式的值表达式的运算结果,一般数学式a(b+c)+dac,算术表达式(a*(b+c)+d)*a*c 将方括号改成圆括号,*不能省略,x/(x+y)+1.0/(x*y)其中不能出现分数,改用除法运算符,圆括号不能缺少,3.14159

16、*r*r/2.0 其中 为非字母字符,要用浮点型常量代替,例:将数学公式改为算术表达式,3、算术运算符的优先级和结合性优先级:高-*/%-+-低(2)(3)(4)注意:可以用()来改变运算的顺序.如(3+5)*8/(4.0-2)结合性:运算符的“结合性”决定同优先级的运算符对操作数的运算次序 左结合性:自左向右运算右结合性:自右向左运算+-*为左结合性 例如:a+b+c-d 根据左结合性,等价于(a+b)+c)-d-(求负值运算)为右结合性,四、自增、自减运算符,类别:单目运算,运算优先级为2,运算符:+使变量的值增 1-使变量的值减 1,运算规则:后缀 i i 前缀 i i,结合性:右结合,

17、例如:int main()int x,m,n;x=10;m=x+;n=+x;return 0;,该语句执行后,m=10,x=11,该语句执行后,n=12,x=12,例 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;,/k=4,j=4,/k=3,j=4,/4,/3,/c=20,a=4,/c=15,a=4,自增、自减运算只能用于变量,不能用于常量和表达式。,注意:,例+6,+(a+b)均为非法的运算,自增、自减运算符高于基本算术运算符。,自增、自减运算符的运算顺

18、序。,五、赋值运算符和赋值表达式,1、简单赋值运算符运算符:=表达式格式:变量表达式优先级:14,低于算术运算符 结合性:右结合运算规则:把=右边表达式的值赋给左边变量,说明:,赋值运算符左边必须是变量而不能是表达式;,赋值表达式的值是赋值号左边变量被赋值后的值;,例:j+3=j a*b=c*4,例:x=5 表达式的值为5(赋值表达式)8+(x=4)表达式值是12(算术表达式),如果赋值号两边的类型不一致,则将赋值号右边表达式的值的类型转换成赋值号左边变量的类型;,赋值语句可以连续进行。,例:a=b=c=0,根据右结合性,该表达式等价于:a=(b=(c=0),例 int i;i=2.56;/结

19、果i=2;,例 float f;int i;i=10;f=i;则 f=10.00000,2、复合赋值运算,算术运算符“+*/%”和赋值运算符“=”结合起来,形成复合赋值运算符。,+=:加赋值运算符;如a+=3,等价于 a=a+3-=:减赋值运算符;如a-=b+3,等价于 a=a-(b+3)*=、/=、%=与此类似,注意:,复合运算符在书写时,两个运算符之间不能有空格。复合赋值运算符的结合性和优先级等同于简单的赋值运算符“=”。复合运算符左边必须是变量;复合运算符右边的表达式计算完成后才参与复合赋值运算;,表达式中不同数据类型的混合运算,当表达式中的数据类型不同时,要进行类型转换。,转换方式自动

20、(隐式)转换:系统自动把数据由低级类型向高级转换。强制转换:将表达式的运算结果强制转换成指定的数据类型。,如下表达式是合法的:13.14159+0+A,自动转换规则:,横向必做,纵向选做,例:数据类型自动转换实例,有如下变量类型:char c;int i;float f;double d;计算表达式:c+f+i+d,char float int double,c+f+i+d,int,double,double,double,该表达式值的类型是double类型,double,double,double,强制类型转换运算符:(类型名),格式:(目标类型名)(表达式),注意:1)强制转换属单目运算,

21、运算优先级为2。2)强制转换得到的是中间变量类型,原变量类型不变。如:int n;float x=1.5f;n=(int)x;强制转换后n的值是1,而x仍然是1.5,类型是float,例:int x=2,y=3;float z=1.6f;(float)(x+y);(将x+y的值转换为float类型,得5.0)(int)z+x;(先将z转换为整型1,再与x相加,得3),练习:计算表达式的值:(int)(double)9/2)-9%2,答案:3,补充:逗号运算符与逗号表达式,逗号运算符,或称顺序求值运算符运算符:,运算优先级:最低,15级结合性:左结合,逗号表达式:由逗号运算符连接起来的两个或两个

22、以上的表达式。格式:表达式1,表达式2,表达式n 逗号表达式的值表达式n的值,求解过程:先求表达式1的值,再求表达式2的值,直至求出表达式n的值。整个表达式的值为表达式n的值。,例:1)x=0,y=100 2)x=5*8,6+9 3)x=1,y=99,z=(x+y)*5 4)x=(i=10,j=5,i*j)5)x=i=10,j=5,i*j,先后给x,y的赋值,表达式的值为100,先把x赋值为40,表达式的值为15,给x,y赋值后,计算z的值,表达式的值为500,等价于x50,先给x,i赋值,再给j赋值,计算i*j,表达式的值为50,求解过程:先求表达式1的值,再求表达式2的值,直至求出表达式n的值。整个表达式的值为表达式n的值。,例 a=3*5,a*4 a=3*5,a*4,a+5例 x=(a=3,6*3)x=a=3,6*a例 a=1;b=2;c=3;printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,b,c),b,c);,/a值15,表达式值60,/a值15,表达式值20,/赋值表达式,表达式值18,x值18,/逗号表达式,表达式值18,x值3,/1,2,3,/3,2,3,作业 下节课上课交,见 第3章(1)作业.doc,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号