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

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

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

1、第三章 数据描述与基本操作(数据类型、运算符与表达式),数据类型常量与变量运算符和表达式不同类型数据间的转换,数据类型的定义数据类型的分类 各种数据类型的特点,数据类型(按照数据的表示形式,范围(占据存储空间的大小(bits,字节),构造特点等将数据分类),1、数据分类原因?,减少空间占用,提高存储效率 大人大床、小人小床,便于对现实问题编程描述 性别、身高,产品型号、等级,C规定:程序中使用的每一个数据都属于某一种类型,数据类型的分类,分类,基本类型,构造类型,指针类型,空类型void,整型,实型,短整型short,整型int,长整型long,单精度float,双精度double,数值型,字

2、符型char,枚举型enum,数组型,结构型struct,共用型union,文件型FILE,类型说明符,在程序中对所用到的数据均属于特定类型,数据类型决定:1.数据占内存字节数2.数据取值范围3.其上可进行的操作,基本数据类型,整型,字符型,实型,有,无,有,float,32,-3.4e-383.4e38,说明:数据类型所占字节数随机器硬件不同而不同,上表以IBM PC机为例:,返回,常量定义:程序运行时其值不能改变的量(即常数)分类:直接常量:从字面即可判别其类型,3,5.7,+整型常量 实型常量 字符常量 字符串常量,符号常量:用标识符代表常量定义格式:#define 符号常量(标识符,大

3、写)直接常量 如#define PRICE 30(预处理语句,不加分号),例 符号常量举例(ch2_1.c)#define PRICE 30main()int num,total;num=10;total=num*PRICE;printf(total=%d,total);总结:使用符号常量的优点1、2,运行结果:total=300,标识符定义:用来标识变量、常量、函数等的字符序列组成:只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线大小写敏感不能使用关键字长度:最长32个字符命名原则:见名知意不宜混淆 如l与I,o与0,例:判断下列标识符号合法性sum Sum M.D.John d

4、ay Date 3days student_name#33 lotus_1_2_3 char ab _above$123,M.D.John,3days,#33,char,$123,ab,整型常量(整常数)三种形式:十进制整数:由数字09和正负号表示.如 123,-456,0八进制整数:由数字0开头,后跟数字07表示.如0123,011十六进制整数:由0 x开头,后跟09,af,AF表示.如0 x123,0Xff,例 12 与 12L,例 30000 为int型 65536 为long int 型,整型常量的类型根据其值所在范围确定其数据类型在整常量后加字母l或L,认为它是long int 型常

5、量,问题2:0123=()100 x123=()100Xff=()10,问题1:判正误E1,098,0XK,实型常量(实数或浮点数)表示形式:十进制数形式:(必须有小数点)如0.123,.123,123.0,0.0,123.指数形式:(e或E之前必须有数字;指数必须为整数)如12.3e312.3*10 3(日常),123E2,实型常量的类型默认double型在实型常量后加字母f或F,认为它是float 型,例:以下为合法实型常量的是(考察实型常量表示方法).123,0,0.0,e3,1e3.5,规范化的指数形式 1.23e212.3e10.123e3,1.23e2,aaa,9,字符常量定义:用

6、单引号括起来的单个普通字符或转义字符.,字符常量的值:该字符的ASCII码值,如 101-A 012-n 376-x61-a 60-0 483-(),例:A-101-x41-65,如 A65,a97,048,n10,如 a A?n 101,转义字符:反斜线后面跟一个字符或一个代码值表示,例 转义字符举例(ch2_001.c,ch2_004.c)main()printf(101 x42 Cn);printf(I say:How are you?n);printf(C Programn);printf(Turbo C);,运行结果:(屏幕显示)A B CIsay:”How are you?”C P

7、rogramTurbo C,例 main()printf(“Yb=n”);,运行结果:屏幕显示:=打印机输出:,字符常量与字符串常量不同,字符串常量定义:用双引号(“”)括起来的字符序列存储:每个字符串尾自动加一个 0 作为字符串结束标志,例:char ch;ch=“A”;,变量的定义、属性、使用方法,从存储的角度:变量名可以看作存储单元的别名 编译系统按照变量名称对存储 单元的数据进行存取管理。,变量含义,其值可以变化的量(数据连同其存储空间被抽象为变量),变量属性,变量名 变量值 变量类型 变量的地址,&变量名,a+3-b=2,3,4,0,a,b,c,存储的概念,运算 c=a+b 后,7,

8、-1,运算 c=a-b 后,a=3 b=4 c=0,注:c规定:要对所用到的变量作说明,说明方法:类型标识符 变量名列表(用,分隔),int float char等,标识符,例:int a,b,c;c=a+b,区分大小写字母;,变量定义时的注意事项:,不得使用保留字;,见名知义;,如同给人起名字一样,保留字/非法字符/长度,判断:a1b2c、axy、a_b_c、name、max、_min、print、sum SUM_bob$、123x、x-y、#1x、a3.456 if,变量赋初值(在定义变量的同时可对变量赋值,变量初始化),形式:类型说明符 变量名=数值;例:int a=3;比较:int c

9、;int c;,任意值,c,6,c,=6,int c=6;,int c;c=6;,int a,b=4;int a=b=c=3;,整型变量占字节数随机器不同而不同,一般占一个机器字shortintlong可用sizeof(类型标识符)测量,实型变量float:占4字节,提供7位有效数字double:占8字节,提供1516位有效数字,字符型变量字符变量存放字符ASCII码char与int数据间可进行算术运算,例 float a;a=111111.111;/*a=111111.1*/double b;b=111111.111;/*b=111111.111*/,例 a=D;/*a=68;*/x=A+5

10、;/*x=65+5;*/s=!+G/*s=33+71;*/,没有字符串变量,用字符数组存放,例/*ch2_003.c*/#define PRICE 12.5 main()int num=3;float total;char ch1,ch2=D;total=num*PRICE;ch1=ch2-A+a;printf(“total=%f,ch1=%cn”,total,ch1);,运行结果:total=37.500000,ch1=d,回顾,1、不同类型数据的表数范围如何得出?,决定因素:所占空间,存储形式,一位存储空间能表示两种不同状态 0,1两位存储空间能表示四种不同状态 00,01,10,11n位

11、存储空间能表示 种不同状态,21,22,2n,存储形式:以int(16位)为例,分为无符号和有符号存储,所有位均用来存储数值,最小值为0,最大值为,(2n-1)=65535,第一位用来存储符号位,其余位(15)用来存储数值,所能表示的状态215=2n-1,可表示032767(2n-1-1)或(-32768-1),即(-3276832767),问题2、数据在内存中的存储形式?,1、浮点存储 定点存储 2、符号位3、以二进制的补码形式存储,aaa,20,字符常量定义:用单引号括起来的单个普通字符或转义字符.,字符常量的值:该字符的ASCII码值,如 101-A 012-n 376-x61-a 60

12、-0 483-(),例:A-101-x41-65,如 A65,a97,048,n10,如 a A?n 101,转义字符:反斜线后面跟一个字符或一个代码值表示,例 转义字符举例(ch2_001.c,ch2_004.c)main()printf(101 x42 Cn);printf(I say:How are you?n);printf(C Programn);printf(Turbo C);,运行结果:(屏幕显示)A B CIsay:”How are you?”C ProgramTurbo C,例 main()printf(“Yb=n”);,运行结果:屏幕显示:=打印机输出:,字符型数据,字符型

13、变量,char 变量名列表(以,分隔);,例:char a,b;char c=A,d=B;,定义方式,字符型数据在内存的存储形式,1、存储字符的ASC 码 2、定点存储 3、占1个字节,参阅书后附录I ASCII字符编码一览表,字符型与整型之间的关系?,01 10 00 01,例:char c=a;,字符a的ASC 值是 97,思考 int c=97;,01 10 00 01,00 00 00 00,结论c语言中字符型数据和整型数据之间可以通用,1、字符型数据可以字符形式输出,也可以整数形式输出,char c=a;printf(“%c,%d”,c,c);,输出结果:a,97,a,97,2、整型

14、数据可以字符形式输出,int d=97;printf(“%c”,d);,输出结果:a,3、字符型数据也可以整数(ASCII)参加运算,具体表现如下,a+3,100,例:编程从键盘输入一英文小写字母输出其大写字母;,main()char c;scanf(“%c”,,b,c,66,98,B,66,字符常量与字符串常量不同,字符串常量定义:用双引号(“”)括起来的字符序列存储:每个字符串尾自动加一个 0 作为字符串结束标志,例:char ch;ch=“A”;,没有字符串变量,用字符数组存放,“how”“a”“345.9”“44444$”,返回,运算符与表达式,基本概念,运算:即操作,指计算机对数据所

15、做的加工,例:加,减等 运算符:人为规定的计算机完成某种运算的特定符号+,*,%(注:不同的语言,有所不同)运算量(操作数):被运算(加工)的对象,可以是 常量,变量,及表达式。例:3+5,3/(a+5)表达式:由运算符和运算量组成的符合 c语法规则的式子 描述了对那些数据,以什么样的顺序(优先 级、结合性)及进行 什么样的操作。每个 表达式都有一个值,例:3+5*6/2,值:18,C语言的运算符,算术+、-、*、/、%、+、-,关系、=、=、!=,赋值=、+=、-=、*=、/=、%=,条件?:,逗号,,指针运算*、&,逻辑!、&、|,其他,运算符的特点,形式及功能,要求运算对象的数量和类型,

16、单目,双目 f+5 sd,三目 ab?a+4:b-6,先看优先级,后考虑结合方向*,附录III,a-b*c,a*b/c(a*b)/c,*,/具有左结合性(自左至右),a=b=c=3,等价a=(b=(c=3),=具有右结合性(自右至左),&d!x,乘:*3*5,注意类型:%:int,*的优先级高于+,1、赋值运算符与赋值表达式,形式,=,功能,将数据(常量,变量,表达式的值及函数的返回值)等赋给一个变量,形式:变量=数据 赋值表达式,双目运算符,例1:int a;a=3;,3,a,例2:int a=3,b=5,c=6;a=b*c;a=b=c;,优先级结合性?,赋值表达式的值及值的类型,赋值运算符

17、的优先级及结合性,例2:int a=3,b=5,c=6;a=b*c;a=b=c;,优先级:较低,仅高于逗号运算符,结合性:右结合性,自右向左,值:被赋值后变量的值类型:与被赋值的变量的类型相同,30,6,6,a=(b=c);,思考:int a;a=5.7;是否允许?,a=(b*c);,a,5,结论;C语言允许赋值号两端变量的类型与数据的类型不一样,C编译系统会自动将数据的类型转变为变量的类型。,例:int a;a=3.67;printf(“%d”,a);printf(“%f”,a);,a,3,3,3.000000,2、算术运算符与表达式,求余数,47%5,基本形式及功能,+,-,*,/,%(求

18、余),+,-单目-5+,-,*,/,%双目 4/5,8%2,6-8,2,除/两个整数相除结果为整数 向零取整法,5/3,1,%:要求操作数为整型,注意,算术运算符的优先级及结合性,例1、a+-c/5*6,例2、d=a+-c/5*6,算术表达式,正,负最高,其次为(*,/,%,)(+,-)最低算术运算符高于赋值左结合性,a+(-c)/5)*6,d=(a+-c/5*6),a+=5 等价 a=a+5,自反赋值运算符,a%=5 等价 a=a%5,复合运算符,a/=3,a/=3,a=a/3,优先级:与赋值相同结合性:右结合性(从右向左),例:c=b*=a+2,c=b*=(a+2),b=b*(a+2),c

19、=b,自加减运算符,使变量的值增1或减1,+jj=j+1j+j=j+1,a=+j+1a=(+j)+1),-i+-(i+),+5 与(x+y)-,i+j-后缀,+i-j 前缀,区别?,+、-,优先级高,高于算术与赋值,右结合性,k=+i 与 k=i+的区别?,自加减运算符前、后缀形式的区别,int i=3,k=5;k=i+;i k,3,5,4,3,k=i;i=i+1;,int i=3,k=5;k=+i;,i=i+1;k=i;,i k,3,5,4,4,1、+,-单独作用于变量时,并无区别,例:+jj=j+1 j+j=j+1,2、+,-作用于变量作为表达式的一部分时,有区别,赋值类运算的副作用和限制

20、,x=i+j,j=3;i=(k=j+1)+(j=5);i=?9 or 11,如何理解下列表达式,x=(i+)+j,x=i+j i+,尽量用括号或分步书写使表达式清晰易懂,不定解与机器相关,x=(i+)+j,x=i+(+j),逗号运算符和逗号表达式,形式:,功能:将若干个表达式连接起来,顺序求解每个表达式,表达式1,表达式2,表达式n,逗号表达式,值及类型?,逗号表达式的值是最后一个表达式的值,优先级:最低,低于赋值 结合性:左结合性,例:3+5,6+8,例:a=4*2,a+2(a=4*2),a+2,习题 一,1、以下正确的c语言的标识符是()(A)ABC(B)abc(C)A_ASD(D)AD.

21、T(E)%X(F)A+B(G)12AB(H)int,A,B,C,一、选择,a+=5 等价 a=a+5,自反赋值运算,a+=b 若b是包含若干项的表达式则相当于b有括号a+=3+ya+=(3+y)a=a+(3+y),3、设n=10,i=4,则赋值运算n%=i+1执行后,n的值是()(A)0(B)3(C)2(D)1,A,4、逗号表达式(a=3*5,a*4)的值为()a+15的值为()a的值为()(A)15(B)30(C)60(D)不确定,C,B,A,a=3*5,a*4,a=(3*5,a*4),(a=3*5),(a*4),a=3*5,a*4,a+5的值是(),20,5、设int a=2,b=2;则a

22、+b的结果是()a的结果是(),b的结果是()(A)2(B)3(C)4(D)5,C,B,A,6、设a=2,b;则执行c=b=a-;语句后,a的值是(),b的值是(),c的值是()(A)()()(),解释:c=b=a-,b=a;a=a-1;c=b;,7、表达式,的值是()()()()(),返回,不同类型数据间的转换隐式转换什么情况下发生运算转换-不同类型数据混合运算时赋值转换-把一个值赋给与其类型不同的变量时输出转换-输出时转换成指定的输出格式函数调用转换-实参与形参类型不一致时转换运算转换规则:不同类型数据运算时先自动转换成同一类型,例一:int a;a=3.56;,a,3,例二:int a=

23、3;printf(“a=%fn”,a);,a=3.000000,各类数值型,字符型数据间的混合运算,整型,实型,字符型数据可以混合运算,转换规则,例2:double a=78.89,b=45.45;10+a+1.589.90*b*a,例:将3.5+2.7的值转换成整型(int)3.5+2.7,不同类型数据的显式转换,采用强制类型转换运算符,作用:将一个类型的数据强制转换成另一类型数据,形式:(类型标识符)表达式优先级最高,左结合,例1:float x;int k;k=(int)x,(int)(3.5+2.7),思考:float x=3.5;求(int)x+2的值,及x的值,例(double)(

24、3/2)(int)3.6(int)(x+y)(int)x+y,例:main()float x=3.6;int i;i=(int)(x);printf(“x=%f,i=%d”,x,i);求结果?,x=3.600000,i=3,注:对变量进行显示转换后,得到一个新的类型的数据,但原来变量的类型及值不变,关系运算符与关系表达式,形式、功能,=,=,=,!=,注:1、为双目运算符 31(a+b)=(c+d)2、操作数为数值类型,字符型 a78,优先级结合性,优先级:内(,=,=)高于(=,!=)外 高于赋值低于算术结合性:左结合性,例 ca+b ab!=c a=bc,c(a+b),(ab)!=c,a=

25、(bc),a=(bc),思考:关系表达式的值?,31 结果是什么?,逻辑值(真、假),关系表达式的值为逻辑值,关系成立为真,不成立为假,系统用0和1表示printf(“%d”,31);=1,31值为1,关系表达式,设a=3,b=2,c=1;c278a=10010,c(a+b),(52)7)8,a=(10010),总结,1,0,0,练习:int x=2,y=3;求z=3-1=x+1=y+2的值,1,注意事项,1?如何判断两个浮点数是否相等,例:1.0/3.0*3.0!=1.0 的值为?,0,应避免对两个实数表达式作“=”或“!=”判断,因为浮点型数据在处理的时候会有四舍五入。float a,b;

26、fabs(a-b)1e-5 fabs(1.0/3.0*3.0-1.0)1e-5,0,练习:int x=2,y=3;求值:z=3-1x+1=y+2,值为:1,z=23=5,z=1,2?如何说明x在区间a,b中,例 int i=1,j=7,a;a=i+(j%4!=0);则a=,a=x=b 若a=0;b=0.5;x=0.3;则 的值为,2,逻辑运算符,功能,进行逻辑运算:与,或,非,形式,&,|,!,注:1、&,|为双目运算符 3&5!为单目!2、操作数可为任何类型 a&78,逻辑运算中操作数为非0值表示真值,为0表示假,1,优先级结合性,内(!)高于(&,)外,关系算术!结合性:&,|左结合性,!

27、右结合性,例 ab&xy a=b|x=y!a|ab,(a=x)&(x=b),(ab)&(xy),(a=b)|(x=y),(!a)|(ab),逻辑运算真值表,C语言中,运算量:0表示“假”,非0表示“真”,运算结果:0表示“假”,1表示“真”,逻辑表达式,!,求值,逻辑运算中操作数为非0值表示真,为0表示假,系统给出的逻辑运算结果(逻辑表达式的值)为,,()(),思考:求!,1,()(3),注意,在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符,设:a=1,b=2,c=3,d=4,;则求(m=ab)&(n=cd)得值,及,的

28、值,m=0,n=1,整个表达式的值为,例 a&b&c 只在a为真时,才判别b的值;只在a、b都为真时,才判别 c的值例 a|b|c 只在a为假时,才判别b的值;只在a、b都为假时,才判别 c的值P94,逻辑表达式应用举例,写出一个逻辑表达式,若为闰年,该表达式值为真(year%4=0&year%100!=0)|year%400=0,、判闰年,写出一个逻辑表达式,若为非闰年,该表达式值为真!((year%4=0&year%100!=0)|year%400=0),思考:,描述点A(x,y)落在圆中的表达式描述点A(x,y)落于正方形中(除却圆),作业,逻辑表达式应用举例,描述x在区间a,b中,a=

29、x=b,原因:假设 a=0;b=0.5;x=0.3(a10,正确的是:a=x&x=b,条件运算符与条件表达式,功能,根据条件从两个操作数中选择其一,形式,?:三目运算符e1?e2:e3(e1,e2,e3为表达式,类型不限),优先级结合性,仅高于赋值,右结合性,f=ab?a:cd?c:d f=(ab?a:(cd?c:d),例 求 a+|b|printf(“a+|b|=%dn”,b0?a+b:a-b);,条件表达式的值及类型,e2或e3之一,类型为两者中的高者,e1?e2:e3,练习,、int a=1,b=2;max=ab?a:b;2、int x=5,y=3;,max=2,printf(“%f”,

30、xy?1:1.5),1.000000,printf(“max=%d”,ab?a:b),sizeof 运算符,测定某一种类型数据所占存储空间长度的运算符,形式:sizeof(类型标识符)sizeof(数据)(常量,变量,表达式),已知:char 1字节;int,short 2字节;long 4字节 float 4节;double 8 字节例:printf(”%d”,sizeof(char);int a;float b;printf(“%d,%d,%d,%d,%d”,sizeof(a),sizeof(4),sizeof(4l),sizeof(b);sizeof(b+b);,1,2,2,4,4,8,

31、随程序输入,计算机,数据输入,数据输出,输入与输出,从键盘、文件、扫描仪等,输出到显示器、文件中、打印机等,参照物,单独输入,putchar(字符型变量),例:putchar(ch);,向显示器输出ch的值,输出函数,printf():格式输出函数 功能:按格式向终端(显示器)输出数据,调用形式:printf(格式控制,输出表列),由双引号括起来的字符串,需要输出的数据(常量,变量,表达式)若有多个用,分隔开,A:普通字符需原样输出或执行相应操作(指转义字符例n),B:格式说明由和格式字符组成(,f),用来将输出的数据转换为指定的格式输出;,已知:int a;a=5;,输入函数,2、scanf

32、()格式输入函数 功能:按格式从终端(键盘)输入数据到内存中(变量中),调用形式:scanf(格式控制,地址表列),由双引号括起来的字符串,若干个地址(&变量名)组成的表列,用,分隔开,A:普通字符需原样输入,B:格式说明由和格式字符组成(,),用来将输入的数据转换为指定的格式输入到变量中;,例:若有程序段如下:int a,b;scanf(“%d:%d”,);若使变量a的值为3,b的值为5,请将scanf函数补充 完整,并正确输入数据,输入3:5后回车,a,b,变量a的地址用&a表示,变量b的地址用&b表示,3,&a,&b,5,?,?,返回,头函数,预编译指令,stdio.h,include,

33、上述I/O函数使用之前必须使用下列语句:,#include“stdio.h”,#include,练习,、int a=1,b=2,c=3,d=4;求ab?a:cd?c:d 的值、编程:输入一个字符,判别其是否是大写字符,若是,转换成小写字符后输出,3、int i=3;printf(“%d”,+i);i=3;printf(“%d”,i+);,4,3,4/*ch2_003.c*/#define PRICE 12.5 main()int num=3;float total;char ch1,ch2=D;total=num*PRICE;ch1=ch2-A+a;printf(“total=%f,ch1=%

34、cn”,total,ch1);,运行结果:total=37.500000,ch1=d,5、的结果是(),6、定义int x,y;执行(x=1,+x,x+2);语句后,的值是(),7、以下语句的输出结果是()unsigned int b=65535;printf(“%d”,b);,8、以下语句的输出结果是()int a=-1;printf(“%x”,a);,ffff,9、以下程序的执行结果为()main()int n=2;n+=n=n*n;printf(“n=%dn”,n);,10、设.5,y=3.5,求(int)x+y 的值()()().,B,作业,一、3.6、3.7、3.9、3.12写在作业

35、本上二、211.84.112.26/tcroot 平台下的运算符和表达式的章节作业。在电脑上完成。交作业时间:下周二之前交上和提交,Turbo C上机初步,C语言程序的上机过程(DOS 操作系统为例),编辑,编译,连接,执行,结果,源程序.C,目标程序.OBJ,可执行程序.EXE,C语言程序的执行过程(DOS 操作系统为例),无,编辑,开始,编译,有错?,源程序f.c,目标程序f.obj,连接,库函数和其他目标函数,执行,可执行目标程序f.exe,结果 正确?,结束,有,不正确,正确,Load:装入一个指定的或选择的文件Pick:列出最近装入到编辑窗口的文件由用户选择New:清除当前的编辑内容,开始一个新文件Save:将当前编辑内容存盘Write to:给定一个文件名,将当前编辑内容存入到文件Directory:显示当前目录Change dir:改变当前文件目录0s shell:暂时退出到,按返回Quit:退出,常用菜单项解释;,Compile to obj:编译当前源文件,生成Obj目标文件Make exe file:编译并连接生成可执行的.EXE文件Link exe file:连接当前的.OBJ文件和库文件,生成.EXE文件,总结:,数据类型运算符和表达式,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号