数据类型及表达式.ppt

上传人:牧羊曲112 文档编号:5986007 上传时间:2023-09-11 格式:PPT 页数:63 大小:820KB
返回 下载 相关 举报
数据类型及表达式.ppt_第1页
第1页 / 共63页
数据类型及表达式.ppt_第2页
第2页 / 共63页
数据类型及表达式.ppt_第3页
第3页 / 共63页
数据类型及表达式.ppt_第4页
第4页 / 共63页
数据类型及表达式.ppt_第5页
第5页 / 共63页
点击查看更多>>
资源描述

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

1、第2章 数据类型及表达式,本章知识要点(1)基本的数据类型。(2)常量和变量。(3)C语言各种运算符和表达式的应用。,第2章 数据类型及表达式,2.1 C语言的数据类型,2.2 运算符及表达式,2.1 C语言的数据类型,单精度实型(float),双精度实型(double),整型(int),字符型(char),枚举类型,数组类型,结构体类型,共用体类型,实型,基本类型,构造类型,空类型(void),指针类型,数据类型,C语言中,数据有常量和变量之分,它们分别属于以上这些类型。在程序中对用到的所有数据都必须指定其数据类型数据类型决定:数据占内存字节数 数据取值范围 其上可进行的操作,注意:,#in

2、clude stdio.h void main()int a,b,sum;a=123;b=456;sum=a+b;printf(sum is%dn,sum);,内存,0005,0006,0002,0003,0004,0001,0000,地址,a,b,sum,#include stdio.h void main()int a,b,sum;a=1;b=2;sum=a+b;printf(sum is%dn,sum);,2.1 C语言的数据类型,2.1.1 基本数据类型,2.1.2 常量,2.1.3 变量及其类型定义,2.1.1 基本数据类型,整型数据,实型数据,字符型数据,基本数据类型,2.1.1

3、基本数据类型,长整型(long int),整型数据,一般整型(int),短整型(short int),带符号(signed),无符号(unsigned),带符号(signed),无符号(unsigned),带符号(signed),无符号(unsigned),整型数据的特性见下表:,2.1.1 基本数据类型,长双精度实型(long double),实型数据,单精度实型(float),双精度实型(double),实型数据的特性见下表,2.1.1 基本数据类型,字符型数据,一般字符型(char),带符号字符型(signed char),无符号字符型(unsigned char),字符型数据的特性见下

4、表,2.1.2 常量,整型常量,实型常量,字符型常量,字符串常量,常量,整型常量,(三种表现形式):,十进制形式:与数学上的整数表示相同。例如:12,-100,0,八进制形式:在数码前加数字0。例如:012,十六进制形式:在数码前加0X(数字0和字母X,大小写均可)。例如:0 x12,=1*81+2*80=10,=1*161+2*160=18,2.1.2 常量(一),注意事项:,八进制的数码范围为0-7;则:018、091、0A2,十六进制的数码除了数字0-9外,还使用英文字母a-f(或A-F)表示10-15。如:0 x1e、0Xabcdef、0 x1000 但:0X2dfg、0 x100L,

5、错误,都是错误的。,实型常量,(二种表现形式),十进制形式:由数字和小数点组成;,指数形式:由“十进制小数”+“e(或E)”+“十进制数整数”三部分组成。,例如:3.4 4.3,例如:12.5e-6 表示12.510-6,十进制小数,e(或E),十进制数整数,2.1.2 常量(二),注意事项:,小数点不能单独出现;,e或E的两边必须有数,且其后面必须为整数;,如:0.=.0=0=0.0.,如:6E0.2 e5 6E,(错误),(错误),2.1.2 常量(二),字符型常量,(二种表现形式):,用单引号括起来的一个字符;,用单引号括起来的由反斜杠()引导的转义字符。,如:A、1、?等。,如:n 1

6、01 x41,在统计字符个数时,只能记为一个字符,一个字符的多种表示方法:,字符A可以表示为A、x41、101,2.1.2 常量(三),转义字符表,字符形式,功能,n,换行,t、V,横向跳格、,b、r,竖向跳格,退格、,f,回车,、,8进制数表示的ASCII码对应的字符,反斜杠、单引号、双引号,ddd,换页,xhh,16进制数表示的ASCII码对应的字符,字符串常量字符串常量:用一对双引号括起来的字符序列 2.字符串结束标记0。每一个字符串常量结尾都有一个字符0(一般情况是由系统自动加上)。如:CHINA在内存中为:a为两个字符 a为一个字符,a,如:Hello,1999,a,2.1.2 常量

7、(四),main()printf(abctden);printf(htibbjk);,设一个输出区占8列,试分析输出结果。,例:,符号常量:,特点:在程序中不能给它赋值,例3-1#define PRICE 30void main()int num,total;num=10;total=num*PRICE;printf(“total=%d”,total);,在程序预处理时,凡是出现标识符PI的地方都将用数据3.14159来替换。,结果:total=300,符号常量定义方法:#define 标识符 常量#define PI 3.14159,2.1.3 变量及类型定义,1.变量定义,变量:在程序执行

8、过程中其值可以被改变的量。,变量三要素,变量名,变量数据类型,变量的值。,变量定义的实质是按照变量说明的数据类型为变量分配相应空间的存储单元,在该存储单元中存放变量的值。,数据类型,例如:int i;char c1;float x;double y1,y2;,变量定义一般格式:,变量名表;,内存,0005,0006,0002,0003,0004,0001,0000,地址,c1,x,i,变量名是一个符号地址,可以用运算符&取得存储单元的地址。,C语言对变量的要求:“先定义、后使用”,数据类型:C语言的合法数据类型。如int、short、char、float、double等。,变量定义说明:,在源

9、程序中,变量用标识符表示(小写)。,变量在内存中占据一定的存储单元。不同类型的变量,所占据的内存单元数不同。,命名原则:见名思义 如:sum,area,r,2.1.3 变量及类型定义,2.变量初始化及赋值,变量赋初值在定义同时赋初值亦称初始化 如:int a=3;float f=3.56;char c=a;int x=1,y=1,z=1;int x=y=z=1;(错误),int a=3;相当于 int a;a=3;,2.2.2 算术运算符及算术表达式,2.2.1 运算符和表达式,2.2 运算符及表达式,2.2.3 关系运算符及关系表达式,2.2.4 逻辑运算符及逻辑表达式,2.2.5 条件运算

10、符及条件表达式,2.2.6 赋值运算符及赋值表达式,2.2.7 逗号运算符及逗号表达式,2.2.8 求字节运算符,2.2.9 类型转换,2.2.1 运算符和表达式,1.运算符,2.2.1 运算符和表达式,用运算符将操作对象连接起来、符合C语法规则的式子称为表达式。表达式因运算符种类也可分为各种表达式,如3+4,是算术表达式。x y 为关系表达式。,运算符的优先级是指不同的运算符在表达式中进行运算的先后次序。如,算术运算符*、/的优先级高于+、-的优先级。如 2+4*5/2-8,当一个运算对象的两侧的运算符的优先级相同时,运算的结合方向称为结合性。运算符的结合性分为左结合和右结合两种。在C语言中

11、,运算对象先与左面的运算符结合称左结合,如+、-、*、/的结合方向为自左向右;运算对象先与右面的运算符结合称右结合,如单目运算符+、-的结合方向是自右向左。如 2+3 5。,5.据运算符的运算对象的个数,C语言的运算符分为 单目运算符、双目运算符和三目运算符,2.表达式,3.运算符的优先级,4.运算符的结合性,+加法运算符或正值运算符 2+3、+6-减法运算符,或负值运算符 3-4、-6*乘法运算符 3*4、a*b/除法运算符 3/4、(a+b)/(a-b),2.2.2 算术运算符及算术表达式,1.基本的算术运算符,注意:两个整数相除,其值为整数。5/3值为1除数、被除数有一个为负值时,结果”

12、向零取整”-5/3值为-1 除数、被除数有一个为实数时,结果为double型,2.2.2 算术运算符及算术表达式,%模运算符,或称求余运算符%两侧均为整型数据。如:7%4的值为3-7%4,7%-4,-7%-4的值为多少?,符号由被除数的值决定,-3,3,-3,2.算术表达式和运算符的优先级与结合性1)用算术运算符和括号将运算对象连接起来的符合C语言语法规则的式子,称为算术表达式(运算对象包括常量、变量、函数等)如:3.14*r*r/x2)运算符的优先级和结合性 优先级:先*、/、%后+、-结合性:左结合性。即表达式从左向右进行计算,3+4*5-6/2+8%4=?(),20,2.2.2 算术运算

13、符及算术表达式,3、自增、自减运算符+i,-i 在使用i之前,先使i的值加1或减1 i+,i-在使用i之后,使i的值加1或减1 注意:(1)自增、自减运算符只能用于变量,而不能用于常量和表达式。如:5+、-(a+b)不合法(2)+和-的优先级别高于算术运算符,结合方向是“自右向左”如:-i+相当于-(i+),2.2.2 算术运算符及算术表达式,例 自增自减运算#include“stdio.h”void main()int i=0,j;j=i+;printf(“%d,%dn”,i,j);i=0;j=+i;printf(“%d,%dn”,i,j);,区分:j=i+1;j=+i;,1,01,1,例

14、自增自减运算#include“stdio.h”void main()int i=0,j;j=i+;printf(“%d,%dn”,i,j);i=0;j=i+1;printf(“%d,%dn”,i,j);,1,00,1,下述程序段的输出结果是_。intx=10;inty=x+;printf(%d,%d,x,y);A.11,10 B.11,11 C.10,10 D.10,11,练一练:,C语言有六种关系运算符,2.2.3 关系运算符及关系表达式,例:ab!=c 等效于(ab)!=c a=bc 等效于 a=(bc),2.2.3 关系运算符及关系表达式,关系运算:比较运算,用“关系表达式”进行运算。例

15、:a3 是一个关系表达式,它取两个值:真(true)和 假(false)。,2.2.3 关系运算符及关系表达式,关系表达式:用关系运算符连接的表达式。,例:a=3,b=2,c=1,则:(ab)=c 真,表达式的值为1d=ab d的值等于1f=abc f的值等于0 x=a+b2 x=1,关系表达式的值:,2.2.3 关系运算符及关系表达式,优先次序为:!(非)&(与)|(或),逻辑运算符及其运算次序:,2.3.4 逻辑运算符及逻辑表达式,逻辑运算的“真值表”(操作数的值为不同组合时,逻辑表达式的值),在一个逻辑表达式中,包含多个逻辑运算符,例:(ab)&(xy)可写为:ab&xy,2.2.4 逻

16、辑运算符及逻辑表达式,例:a=4 a0,(真),(假),y=1,2.2.4 逻辑运算符及逻辑表达式,练一练:,1、已有定义:int x=3,y=4,z=5;则表达式!(x+y)+z-1&y+z/2的值是():A)6 B)0 C)2 D)1,D,C语言中逻辑运算的不完全求解,编译器在求解逻辑表达式的值时,采用“非完全求解”的方法,即:当求得表达式为真后,就结束求解;只有在需要执行下一个逻辑运算时,才继续运算。,1、a&b&c 只有a为真时,才判别b的值;只有a和b均为真时,才判别c的值。只要a为假,就不再判别b和c的值,直接求得表达式的值为假。,0*5*18,2.2.4 逻辑运算符及逻辑表达式,

17、2、a|b|c,2.2.4 逻辑运算符及逻辑表达式,练一练:,1、已有定义:int x=3,y=4,z=5;则表达式!(x=y)&(z=9)&(y=7)的值是()A)6 B)0 C)2 D)1,B,此时x=()y=()z=(),4,5,4,(1)条件表达式的一般形式:,条件运算符的执行顺序:先求解表达式1的值,若其为真,则求解表达式2的值,且整个条件表达式的值等于表达式2;若表达式1为假,则求解表达式3的值,且整个条件表达式的值等于表达式3。,2.2.5 条件运算符(?:)及条件表达式,ab?a:b;,max=,图示:,int a=4,b=5,max;,max=(ab)?a:b;,条件运算符要

18、求有三个操作对象,称为“三目运算符”,2.2.5 条件运算符(?:)及条件表达式,(1)条件运算符的优先级高于赋值运算符,低于算术运算符和关系运算符。,(2)条件运算符的结合方向是“从右至左”。,一、赋值运算符=用法:变量=表达式作用:将表达式的值赋给左边的变量 a=5;x=y;注意:与判等符号=相区别,x=x+1;,与数学中的等式不同,2.2.6 赋值运算符及赋值表达式,二、赋值结果与类型转换1、实型数据(包括单、双精度)赋给整型变量时,舍弃实数的小数部分2、整型数据赋给单、双精度变量时数值不变,但以浮点数形式存储到变量中,例:#include“stdio.h”void main()int

19、i;float f;i=5.34;f=23;printf(“%d,%fn”,i,f);,5,23.000000,2.2.6 赋值运算符及赋值表达式,三、赋值表达式由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”形式:变量=表达式 结合方向:自右向左 如:a=5 a=(b=5)a=1+3+5 计算过程:1.计算赋值运算符右侧“表达式”的值 2.将计算结果赋给左侧的变量 3.赋值表达式的值就是被赋值的变量的值。,想一想:a=b=c=5 a=5+(c=6),2.2.6 赋值运算符及赋值表达式,四、复合的赋值运算符,在赋值符“=”之前加上其它运算符,构成复合赋值运算符:+=,-=,*

20、=,/=,%=,2.2.6 赋值运算符及赋值表达式,练一练:,如:a=2 a=(b=10)/(c=2)a+=a-=a*a,a=(),a=(),a=a+(a-(a*a)=?,a=(),5,-4,0,形式:表达式1,表达式2,,表达式i作用:用于连接表达式计算过程:1.求解表达式1的值2.再求解表达式2,表达式i3.整个逗号表达式的值是表达式i的值。,a=63,2.2.7 逗号运算符及逗号表达式,如:a=(3+5,6+8,7*9),注意:并不是任何在地方出现的逗号者是逗号运算符:printf(“%d,%d,%d,”,a,b,c),一个逗号表达式又可与另一个表达式组成一个新的逗号表达式:(a=3*5

21、,5*4),a+5,逗号运算符是所有运算符中级别最低的:x=(a=3,6*3)x=a=3,6*a,X=18,X=3,2.2.7 逗号运算符及逗号表达式,例#includevoid main()int a=1;printf(result:%dn,(a=3*a,3*a);,result:9,2.2.7 逗号运算符及逗号表达式,2.2.8 求字节运算符,1.sizeof 表达式,如:sizeof(float)计算单精度实型数据在内存中所占的字节数,结果为4。,sizeof(a),2.sizeof(类型名),求字节运算符是sizeof,它用于计算变量或某种类型的量在内存中所占的字节数。用法有两种:,功

22、能是计算出表达式计算结果所占用内存的字节数,整型、实型(包括单、双精度)、字符型数据间可以混合运算例如:*A 是合法的运算时,不同类型的数据要先转换成同一类型,然后进行运算转换规则:,float型数据在运算时一律转换成double型,不同类型进行混合运算时,按照类型级别由低到高的顺序转换,字符型和short型在运算时一律转换成int型,2.2.9 类型转换,1.自动类型转换,2、强制类型转换利用强制类型转换运算符将一个表达式转换成所需类型形式:(类型名)表达式 如:(double)a(int)(x+y)注意:与(int)x+y不同(int)8.5%5,例 强制类型转换#include stdio.h main()float x;int i;x=3.6;i=(int)x;printf(“x=%.1f,i=%d”,x,i);,结果:x=3.6,i=3,2.2.9 类型转换,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号