数据类型与变量表达式PPT学习教案_第1页
数据类型与变量表达式PPT学习教案_第2页
数据类型与变量表达式PPT学习教案_第3页
数据类型与变量表达式PPT学习教案_第4页
数据类型与变量表达式PPT学习教案_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、会计学1 数据类型与变量表达式数据类型与变量表达式 整数类型的有关数据: 第1页/共57页 (2)(2)整型变量的定义整型变量的定义: : 规定在程序中所有用到的变量都必须在 程序中定义,即“强制类型定义”。 例如例如: : int a,bint a,b;(指定变量、为整型) unsigned short c,d;unsigned short c,d;(指定变量、为 无符号短整型) long e,f;long e,f;(指定变量、为长整型) (3)整型常量的类型整型常量的类型 第2页/共57页 (2)_(2)_补补 数制转换数制转换: : 1)10进制2、8、16进制 方法:除基倒取余 2 2

2、) 2、8、16进制 10进制 方法:按权展开相加求和 第3页/共57页 (4)(4)整型数据在内存中的存放形式整型数据在内存中的存放形式 数据在内存中是以二进制形式存放的。 如如: : int i; /* 定义为整型变量 */ i=10; /* 给i赋以整数10 */ 0000 0000 0000 1010 以两个字节为例 负数以补码的形式存放 如如: int i; /* 定义为整型变量 */ i=-10; /* 给i赋以整数-10 */ 1111 1111 111 0110 第4页/共57页 十进制数10的二进制形式为1010,Turbo C 2.0和Turbo C+ 3.0为一个整型变量

3、 在内存中分配2个字节的存储单元(不同 的编译系统为整型数据分配的字节数是 不相同的,VC+ 6.0和C-Free3.5则分配 4个字节)。 数值是以补码(complement) 表示的。 补码的求法: 第5页/共57页 例如:整数13在内存中实际存放的情况: 第6页/共57页 例例2.1 整型变量的定义与使用整型变量的定义与使用 #include void main() int a,b,c,d; /指定、为整型变量 unsigned ;/指定为无符号整型变量 12;-24;10; ; printf(,); 可以看到不同种类的整型数据可以 进行算术运算 运行结果:运行结果: , 第7页/共57

4、页 例例2.2 整型数据的溢出整型数据的溢出 #include void main() int a,b; a=32767; b=a+1; printf(“%d,%dn”,a,b); 数值是以补码表示的。(以16位,两 个字节为例)一个整型变量只能容纳- 3276832767范围内的数,无法表示大于 32767或小于-32768的数。遇此情况就发 生“溢出”。 运行结果:运行结果: 32767,-3276832767,-32768 第8页/共57页 例1、下列定义中,( )定义的变量可以存放 123.4。 Along aBunsigned bCint dDfloat c 例2、以下关于long、

5、int和short类型数据占用内存大小的叙述中正确的是( )( 全国计算机等考试原题) A、均占4个字节 B、根据数据的大小来决定所占内存的字节数 C、由用户自己定义 D、由C语言编译系统决定 D D 第9页/共57页 (1) (1) 浮点型变量的分类浮点型变量的分类 浮点型变量分为单精度(float型)、双精度 (double型)二类形式。 类型位数数的范围有效数字 float3210-37 103867 位 double6410-307103081516位 2、浮点型数据变量、浮点型数据变量 第10页/共57页 (2) (2)浮点型数据在内存中的存放形式浮点型数据在内存中的存放形式 一个浮

6、点型数据一般在内存中占4 个字节(32位)。与整型数据的存储 方式不同,浮点型数据是按照指数 形式存储的。系统把一个浮点型数 据分成小数部分和指数部分,分别 存放。指数部分采用规范化的指数 形式。 (3 3)浮点常量的类型)浮点常量的类型 第11页/共57页 例例2.3 浮点型数据的舍入误差浮点型数据的舍入误差 #include void main() float a,b; a = 123456.789e5; b = a + 20 ; printf(“%fn”,b); 一个浮点型变量只能保证的有效数字是7位 有效数字,后面的数字是无意义的,并不准确 地表示该数。应当避免将一个很大的数和一个 很

7、小的数直接相加或相减,否则就会“丢失” 小的数 运行结果:运行结果: 123456.789e5123456.789e5 第12页/共57页 第13页/共57页 (2)字符数据在内存中的存储形式及其使用方法)字符数据在内存中的存储形式及其使用方法 一个字符常量存放到一个字符变量中,实际上 并不是把该字符的字型放到内存中去,而是将 该字符的相应的ASCII代码放到存储单元中。这 样使字符型数据和整型数据之间可以通用。 注意: 一个字符数 据既可以 以字符形 式输出, 也可以以 整数形式 输出。 第14页/共57页 例例2.3 向字符变量赋以整数。向字符变量赋以整数。 #include void m

8、ain() char c1,c2; c1=97; c2=98; printf(“%c %cn”,c1,c2); printf(“%d %dn”,c1,c2); 在第和第4行中,将整数97和98分别赋 给c1和c2,它的作用相当于以下两个赋值语句 : c1;c2; 因为a和b的ASCII码为97和98 运行结果:运行结果: 97 9897 98 第15页/共57页 例例2.4 大小写字母的转换大小写字母的转换 #include void main() char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(“c c,c1,c2); 程序的作用是将两个

9、小写字母a和b 转换成大写字母A和B。从代码 表中可以看到每一个小写字母比它相应的 大写字母的ASCII码大32。语言允许字符 数据与整数直接进行算术运算。 运行结果:运行结果: 第16页/共57页 有些系统(如Turbo C)将字符变量定义为signed char型。其存储单元中的最高位作为符号位,它 的取值范围是-128127。如果在字符变量中存放 一个ASCII码为0127间的字符,由于字节中最高 位为0,因此用%d输出字符变量时,输出的是一个 正整数。如果在字符变量中存放一个ASCII码为 128255间的字符,由于在字节中最高位为1,用 %d格式符输出时,就会得到一个负整数。 第17

10、页/共57页 4、变量赋初值、变量赋初值 (1)语言允许在定义变量的同时使变量初始化 如如: : int a=3; / 指定为整型变量,初值为 float f=3.56; / 指定为浮点型变量,初值 为.56 char c= a; / 指定为字符变量,初值 为a 第18页/共57页 (2)可以使被定义的变量的一部分赋初值。 如如: : int a,b,c=5; 表示指定、为整 型变量,但只对初始化,c的初值为 (3)如果对几个变量赋以同一个初值, 应写成:int a=3,b=3,c=3; 表示、 的初值都是。 不能写成 int a=b=c=3; 注意:注意:初始化不是在编译阶段完成的而是在程序

11、运 行时执行本函数时赋初值的,相当于有一个赋值 语句。 第19页/共57页 例、以下定义语句中正确的是( )。 (2008年4月全国计算机等考试原题) A、int a=b=0 ; B、char A=65+1,b=b; C、float a=1,*b= D、double a=0.0,b=1.1; D 第20页/共57页 的运算符有以下几类:的运算符有以下几类: l 算术运算符 (+ - * / %) l 关系运算符 (!) l 逻辑运算符 (!|) l 位运算符 ( |) l 赋值运算符 (及其扩展赋值运算符) l 条件运算符 (?:) l 逗号运算符 (,) 1、运算符的分类、运算符的分类 (1

12、 1)、按功能分)、按功能分 第21页/共57页 l 指针运算符 (*和) l 求字节数运算符() l 强制类型转换运算符( (类型) ) l 分量运算符(-) l 下标运算符() l 其他 (如函数调用运算符() (2)(2)按运算对象个数分按运算对象个数分 l 单目运算符:只有一个运算对象,如;-(负号) l 双目运算符:有两个运算对象,如:+(加号) l 三目运算符:有三个运算对象,如:?:条件运算 第22页/共57页 第23页/共57页 2、算术运算符和算术表达式、算术运算符和算术表达式 (1)(1)基本的算术运算符基本的算术运算符: : (加法运算符,或正值运算符。如:、) (减法运

13、算符,或负值运算符。如:、) * * (乘法运算符。如:*) (除法运算符。如:) (模运算符,或称求余运算符,两侧均应为整型数据,如:的值为)。 第24页/共57页 例 5/2 = -5/2.0 = 例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2 例 5/2 = 2 -5/2.0 = -2.5 例 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 = 0 5.5%2 () 第25页/共57页 (2) (2) 算术表达式算术表达式 用算术运算符和括号将运算对象(也称操作数) 连接起来的、符合语法规则的式子,称为 算术表达式。运算对象包括常量、变量、函数 等。 例

14、如例如: : *.5a 是一个合法的表达式 第26页/共57页 (3)(3) 自增、自减运算符自增、自减运算符 作用是使变量的值增或减 如如: ,(在使用之前,先使的值 加 (减) ,(在使用之后,使的值加 ( 减) 第27页/共57页 i+i+与与+i+i的区别:的区别: 是先执行后,再使用的值; 是先使用的值后,再执行。 例如:例如:i=3i=3 ; i的值先变成4, 再赋给,j的值均为 ; 先将 i的值3赋给,的值为,然后变为 第28页/共57页 注意:注意: (1)自增运算符(),自减运算符(), 只能用于变量,而不能用于常量或表达式, (2)和的结合方向是“自右至左”。 自增(减)运

15、算符常用于循环语句中使循环变量 自动加。也用于指针变量,使指针指向下一个地址 例 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 第29页/共57页 语言中有的运算符为一个字符,有的运算符由 两个字符组成 ,为避免误解,最好采取大家都能理 解的写法。 例如:不要写成i+j的形式,而应写成 (i+)+j的形式 (5) 有关表达式使用中的问题说明有关表达式使

16、用中的问题说明 第30页/共57页 例1、以下选项中值为1 的表达式是( )(2006年9月全国计算机二级考试原题) A 、1-0 B、 1-0 C、 1-0 D、 0-0 例2、s(s-a)(s-b)(s-c)是合法的C语言表达式。 例3、表达式3*5/2和表达式3/2*5等价。 例4、在C语言中,表达式(010+2)的值是10。 例6、以下不能正确表示代数式2ab/cd的C语言表达式的是( )。 (2008年9月全国计算机等考试原题) A、2*a*b/c/dB、a*b/c/d*2C、a/c/d*b*2D、2*a*b/c*d B D 第31页/共57页 3、赋值运算符和赋值表达式、赋值运算符

17、和赋值表达式 (1)(1)赋值运算符赋值运算符 赋值符号“”就是赋值运算符,它的作用是 将一个数据赋给一个变量。如“”的作用 是执行一次赋值操作(或称赋值运算)。把常 量赋给变量。也可以将一个表达式的值赋 给一个变量. 第32页/共57页 (2) (2)类型转换类型转换 如果赋值运算符两侧的类型不一致,但都 是数值型或字符型时,在赋值时要进行类型 转换。 将浮点型数据(包括单、双精度)赋给整 型变量时,舍弃浮点数的小数部分。 如如: :为整型变量,执行“i=3.56”的结果是使 的值为,以整数形式存储在整型变量中. 第33页/共57页 将整型数据赋给单、双精度变量时,数值不变, 但以浮点数形式

18、存储到变量中 如如: : 将23赋给float变量,即执行23,先 将23转换成2300000,再存储在中。 将23赋给double型变量,即执行23,系 统将23补足有效位数字为2300000000000000 ,然后以双精度浮点数形式存储到变量中。 第34页/共57页 将一个double型数据赋给float变量时,截取其前 面7位有效数字,存放到float变量的存储单元(4个 字节)中。但应注意数值范围不能溢出。 如如: :float f;double d=123.456789e100; f=d; 就出现溢出的错误。 如果将一个float型数据赋给double变量时,数值不 变,有效位数扩

19、展到16位,在内存中以8个字节存储 第35页/共57页 第一种情况:低位对应、高位补零低位对应、高位补零 若所用系统将字符处理为无符号字符类型,或程序已将字符变量定义为unsigned char型,则将字符的位放到整型变量低位,高位补零。例如:例如: 将字符将字符376赋给赋给int型变量型变量 第二种情况:符号扩展符号扩展 若所用系统(如Turbo C+)将字符处理为带符号(signed char)时,若字符最高位为,则整型变量高位补;若字符最高位为,则高位全补。这称为“符号扩展”,这样做的目的是使数值保持不变,如变量(字符376)以整数形式输出为,的值也是。 将一个位数少的赋给一个位数多的

20、数 第36页/共57页 例、将一个int、short、long型数据赋给一个char型 变量时,只将其低8位原封不动地送到char型 变量(即截断)。例如:例如:int i=289;char c=a;c=i; c的值为33, 如果用“%c”输 出c,将得到字符 “!” !的ASCII码为33。 赋值情况赋值情况 : 将一个位数多的数赋给一个位数少的数 第37页/共57页 例例2.6 有符号数据传送给无符号变量。有符号数据传送给无符号变量。 #include void main() unsigned ; int ; ; print(n,); “%u”是输出无符号数时所用的格式符。 如果为正值,且

21、在32767之间,则赋值后数 值不变。 运行结果:运行结果: 第38页/共57页 (3) (3) 复合的赋值运算符复合的赋值运算符 在赋值符“”之前加上其他运算符,可以构成复 合的运算符。 例如例如: 等价于 * 等价于 *( ) 等价于 以“”为例来说明,它相当于使进行一次自加()的操作。即先使加,再赋给。 第39页/共57页 为便于记忆,可以这样理解:为便于记忆,可以这样理解: a += b (其中a为变量,b为表达式) a += b(将有下划线的“a+”移到“=”右 侧) |_ a = a + b (在“=”左侧补上变量名a) 第40页/共57页 注意注意: :如果是包含若干项的表达式,

22、则相当于它有如果是包含若干项的表达式,则相当于它有 括号。括号。 如:如: x %= y+3 x %= (y+3) |_ x = x %(y+3)(不要错写成x=x%y+3) 凡是二元(二目)运算符,都可以与赋值符一起组合成复合赋值符。 语言规定可以使用种复合赋值运算符:语言规定可以使用种复合赋值运算符: ,* *, ,| | 第41页/共57页 (4) (4) 赋值表达式赋值表达式 由赋值运算符将一个变量和一个表达式连 接 起来的式子称为“赋值表达式”。 一般形式为一般形式为: 例如例如: “5”是一个赋值表达式 第42页/共57页 对赋值表达式求解的过程是:对赋值表达式求解的过程是: 求赋

23、值运算符右侧的“表达式”的值; 赋给赋值运算符左侧的变量。 例如例如: 赋值表达式“=3*5”的值为15,执行表 达式后,变量a的值也是15。 注意注意: 一个表达式应该有一个值一个表达式应该有一个值 第43页/共57页 左值左值 (Lvalue)(Lvalue) : 赋值运算符左侧必须是标识符(变量) 变量可以作为左值; 而表达式就不能作为左值(如a+b); 常变量也不能作为左值, 右值右值 (Rvalue)(Rvalue) :出现在赋值运算符右侧的表达式(变 量、常量或是表达式) 左值也可以出现在赋值运算符右侧,因而左值 都可以作为右值。 第44页/共57页 赋值表达式中的“表达式”,又可

24、以是一个赋值表 达式。例如例如: : a=(b=5) 分析分析: :括弧内的“b=5”是一个赋值表达式,它 的值等于5。执行表达式“a=(b=5)”相当于执 行 “b=5”和“ab”两个赋值表达式。 赋值运算 符 按照“自右而左”的结合顺序,因此,“(b 5)” 外面的括弧可以不要,即“a=(b=5)”和 “a=b=5” 等价。 第45页/共57页 请分析下面的赋值表达式(a=3*5)=4*3 分析分析: :先执行括弧内的运算,将15赋给a,然后执行 4*3的运算,得12,再把12赋给a。最后a的值为12, 整个表达式的值为12。可以看到(a=3*5)出现在赋 值运算符的左侧,因此赋值表达式(

25、a=3*5)是左值 注意注意: :在对赋值表达式(a=3*5)求解后,变量a得到值 15执行(a=3*5)=4*3时,实际上是将4*3的积12赋给变 量a,而不是赋给3*5。 不能写成: a=3*5=4*3 第46页/共57页 赋值表达式也可以包含复合的赋值运算符。 如:如:a+=a-=a*a 分析分析: :此赋值表达式的求解步骤如下 先进行“*”的运算, 它相当 于*,a的值为 144132。 再进行“”的运算,相当 于=a+(-132),a的值为132-132 -264。 第47页/共57页 将赋值表达式作为表达式的一种,使赋值操将赋值表达式作为表达式的一种,使赋值操 作不仅可以出现在赋值

26、语句中,而且可以以作不仅可以出现在赋值语句中,而且可以以 表达式形式出现在其他语句(如输出语句、表达式形式出现在其他语句(如输出语句、 循环语句等)中。循环语句等)中。 如:如:printf(%d,a=b); 分析分析: :如果b的值为3, 则输出a的值(也是表 达式a=b的值)为3。在一个语句中完 成了赋值和输出双重功能。 第48页/共57页 例1、设有定义:int k=0;,以下选项的四个表达式中与其他三个表达式 的值不相同的是( ) (2007年4月全国计算机二级考试原题) A、k+ B、k+=1 C、+k D、k+1 例3、若变量均已正确定义并赋值,以下合法的C语言表达式是( ) (2007年9月全国计算机二级考试原题) A、x=y=5 B、x=n%2.5 C、x+n=I D、x=5=4+1 (2008年9月全国计算机二级考试原题) A A a=a-(a+b) 第49页/共57页 第50页/共57页 (2)逗号运算符和逗号表达式)逗号运算符和逗号表达式 逗号运算符逗号运算符: :将两个表达式连接起来,又称为“顺序求 值运算符” 如:如:5, 一般形式一般形式: : 表达式,表达式表达式,表达式 求解过程:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论