欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

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

    • 资源ID:5285219       资源大小:278.52KB        全文页数:63页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    第三章 数据类型、运算符与表达式,3、1 C语言的数据类型 3、6 变量赋初值3、2 常量和变量 3、7 混合运算 3、3 整型数据 3、8 算术运算3、4 实型数据 3、9 赋值运算3、5 字符型数据 3、10 逗号运算 3、11 位运算,3、1 C的数据类型所谓数据结构指的是数据的组织形式。,基本类型构造类型指针类型空类型,整型实型字符型枚举型,数组类型结构体类型共用体类型,单精度型双精度型,C语言中的数据有常量和变量之分,它们分属于以上类型。,数据类型,在程序中对用到的所有数据变量都必须指定其数据类型。,3、2 常量和变量 1、常量 在程序运行过程中其值不能改变的量称为常量。一般从其字面形式即可判别。整型常量:12,0,345 实型常量:44.6,-1.23,1.2E-3,6e+2 字符常量:a、D、d 字符串常量:“This is a program.”2、符号常量 符号常量:用一个标识符代表一个常量。,#define PRICE 30 main()int num=10,total;total=num*PRICE;/*相当于total=num*30;*/运行结果:total=300,符号常量使用注意事项,(1)一般符号常量用大写字母取名(2)符号常量的值在其作用域内不能改变 即程序里不能出现 PRICE=40;语句,3、变量,1)标识符:用来作为变量名、符号常量名、函数名、数组名、文件名等的有效字符序列称为标识符 规定:(1)标识符只能由字母,数字和下划 线组成,且以字母或下划线开头 建议不超过 8 个字符。(2)大小写分别表示不同的标识符。,2)关键字(保留字):一些在编译过程中起特殊作用的标识符。如:char,int,short,float,double if,else,while,等共计32个,3)变 量,程序运行过程中其值可以改变的量称为变量。变量应该有名字,并在内存中占有一定的存储单元。,变量名是一个标识符。,合法的变量名:sum,_above,class1,basic,不合法的变量名:M.D.John,3D64,ab,#33,$234,注意:(1)变量名一般用小写字母表示(2)起变量名应遵循“见名知义”原则(3)变量名不能与关键字同名。,4)变量的定义及其目的,例:int a,b,c;char c1,c2;,其目的为:(1)凡未被定义的,不作变量名使用;(2)指定变量类型后,系统编译时可分配相应 的存储单元;(3)定义变量类型便于编译时检查此变量所 进行的运算是否合法。,C中变量应先定义后使用。,计算机内部的数据和C语言的数据都是以二进制补码表示的。补码的最高位为符号位,若为0,该数为正数;若为1,该数为负数。符号位与数值位一起参与运算。,正数的补码即其本身。负数的补码可这样求出:(1)先求该数的绝对值,再求出对应正数的二进制编码;(2)对二进制编码按位取反;(3)对最低位加1。,补充:数的补码表示,求-2的补码(以两个字节表示),(1)求-2的绝对值,|-2|=2,二进制编码为:0000 0000 0000 0010,(2)按位取反得:1111 1111 1111 1101,(3)最低位加1:1111 1111 1111 1101,1,1111 1111 1111 1110,3、3 整型数据,1、整型常量,C整常数有三种表示形式:十进制:123,456,0八进制:以0开头,如:0123 等于十进制数83 011 等于十进制数9 十六进制:以0 x或0X打头 如:0 x123 等于十进制数291 0 x12 等于十进制数18注:负数在计算机中表示形式?,2、整型变量,整型变量,基本整型 int,短整型 shortint,长整型 long(int),无符号型,无符号整型unsigned int,无符号长整型unsigned long,无符号短整型unsigned short,3、整型变量的定义及使用,程序中用到的变量都必须先定义,例如:,运行结果:a+u=22,b+u=-14,4、整型数据的溢出,一个int型变量的最大允许值是32767,如果再加1,其结果会是怎样一种情况?,0111111111111111 数值:32767,+,0000000000000001 数值:1,1000000000000000 数值:-32768,=,它就好像汽车的里程表一样,达到最大值后,又从最小的开始计数.,5、整型常量的类型,1.值在3276832767的整常数,认为它是int型,可赋给 int 型和 long int 型变量;2.值超过上述范围,而在2 21的整常数,认为它是 long int 型,可赋给 long int 型变量;3.只有非负的整常数可赋给 unsigned型变量,但 值不能超出该 unsigned 型变量的取值范围;4.整常量后加一个l 或L,则认为其为 long int 型 常量,如:123L,0L,432L 此常用于函数调用中,使形参类型匹配于实参类型。,31,31,3、4实型数据,1、实型常量,1)十进制数形式:由数字和小数点组成 如:0.0,0.123,-34.6,.678,90.注意:小数点必须有,且其前后数字不能同时缺省。2)指数形式(科学计数法):由尾数,指数和 字母e或E组成 如:123E3 代表 12310 注意:E前必须有数字,E后必须为整数 E5 3.4E5.6 不合法,3,3)规范化的指数(输出)形式:即在字母e或E之前的小数部分中,小数点左边应有一位且只能有一位非零的数字。如:2.3478e2、3.099E5 等等.4)实型数据在内存的存放形式:实型数据是按指数形式存储的,系统把一个实型数据分成小数部分(.xxxxx)和指数部分(采用规范化的指数形式),分别存放.如:3.14159,小数部分占的位数越多,精度越高;指数部分占的位数越多,可表示数值范围越大.,2、实型变量,单精度型(float)32位 7位有效数字 10 10 双精度型(double)64位 1516 位有效数字 10 10,38,38,308,308,定义实型变量:float x,y;double z,a,b;,3、实型变量的赋值 实型常量不分 float型和double型,系统按double型处理,若按float型处理,可在数值后面加f或F.一个实型常量可赋给一个实型变量(float型或double型),根据变量类型截取实常量中相应的有效位数。例:float x;double y;则:x=222222.222 y=222222.222,注意实型数据的舍入误差;应当避免将一个很大的数和一个很小的数直接相加减;同理1.0/3*3!=1,3.5 字符型数据,1、字符常量 1)一般形式字符常量:用单引号括起来的单个字符。如:A,?,=2)转义字符序列:以开头的字符序列,可表示任何可输出的字母字符,专用字符,图形字符和控制字符如n为换行控制符,n 换行将当前位置移到下一行开头 t 水平制表(跳到下一个tab位置)b 退格,将当前位置移到前一列r 回车,将当前位置移到本行开头f 换页,将当前位置移到本页开头 反斜杠字符 单引号(撇号)字符”双引号字符ddd 1到3位8进制数所代表的字符xhh 1到2位16进制数所代表的字符,2、字符变量 用来存放一个字符常量。,定义形式:char c1,c2;,赋值:c1=O;c2=K;,则:,printf(%c%c n,c1,c2);,输出:O K,一个字符变量在内存中占一个字节。,3、字符数据在内存中的存储形式及其使用方法,1)字符数据在内存中存放的是其ASCII值。例:char c1,c2;c1=a;c2=b;则:,97,98,c1,c2,2)C中,整型数据和字符型数据之间可通用(1)程序中,字符数据既可按字符形式输出,也可以整数形式输出。由输出格式字符串%c 和%d 决定。(2)字符数据可进行算术运算,字符变量 既可赋值以字符常量,也可赋以相应的 ASCII值。C的整型数据与字符数据间可相互赋值。,运行结果:a b A B,4、字符串常量,一对双引号括起来的字符序列。例:a,How do you do.,China,abcn,$123.45,C规定:,在内存中,系统自动在每个字符串的结尾加上一个字符串结束标志0,以便系统据此判断字符串结束标志。,所以,“a”在内存中占两个字节。,a,0,char c;c=a;c=a;,C 中无专门的字符串变量,如需要,可用字符数组来存放。,注意:字符常量和字符串常量不可混淆。,3.6 变量赋初值,例1:int a=3;float f=3.56;char c=a;,例2:int a,b,c=3;,错例:int a=b=c=3;,此些变量的初始化不是在编译阶段完成,而是在程序执行本函数时赋予初值的,相当于有一个赋值语句。,3.7 数值型数据间的混合运算,C中,整型,字符型,实型(包括单精度,双精度)数据可出现在一个表达式中进行混合运算。,类型自动转换规则,高,低,double float,long,unsigned,int char,short,例:int i;float f;double d;long e;,则:10 a+i*f-d/e 合法,转换次序:(1)计算 10a,结果为整数107(2)计算 i*f,结果为double型(3)整数107与i*f的积相加,结果为double型(4)计算 d/e,结果为double型(5)将10a+i*f 的结果与 d/e 的商 相减,结果为double型。,3、8 算术运算符和算术表达式,1、运算符的种类、优先级和结合性 语言中运算符和表达式数量之多,在高级语言中是少见的。正是丰富的运算符和表达式使语言功能十分完善。这也是语言的主要特点之一。语言的运算符不仅具有不同的优先级,而且还有一个特点,就是它的结合性。在表达式中,各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的制约,以便确定是自左向右进行运算还是自右向左进行运算。这种结合性是其它高级语言的运算符所没有的,因此也增加了语言的复杂性。,2.算术运算符和算术表达式,1)基本算术运算符*/%(模除,或称求余)例:7%3 值为 1 5/3=1,-5/3=-1,若参加运算的两个数中有一个为实数,则结果为double型。,求余运算(%)要求参与运算的量均为整型。其结果等于两数相除后的余数。,main()printf(nn%d,%dn,20/7,-20/7);printf(%f,%fn,20.0/7,-20.0/7);参与运算量均为整型时,结果也为整型,舍去小数。如果运算量中有一个是实型,则结果为双精度实型。本例中,20/7,-20/7的结果均为整型,小数全部舍去。而 20.0/7和-20.0/7由于有实数参与运算,因此结果也为实型。,2)算术表达式,表达式是由常量、变量、函数和运算符组合起来的式子。一个表达式有一个值及其类型,它们等于计算表达式所得结果的值和类型。表达式求值按运算符的优先级和结合性规定的顺序进行。单个的常量、变量、函数可以看作是表达式的特例。算术表达式是由算术运算符和括号连接起来的式子,以下是算术表达式的例子:a+b(a*2)c(x+r)*8-(a+b)7+i sin(x)+sin(y)(+i)-(j+)+(k-),注意:C语言算术表达式的书写形式类似于数学中的代数表达式,但有区别:(1)a*b 不能写为 ab、ab、a.b(2)c/d 不能写为 cd、,c,d,(3)e-(f+(g-h)/(i-j)+k 不能写为 e-f+(g-h)/(i-j)+k(4)3.14*r*r 不能写为*r*2 或 3.14*r2(5)sin(x)不能写为 sinx(6)log(x)不能写为 lnx log10(x)不能写为 logx,10,3、算术运算符的优先级和结合性,1)优先级:指表达式运算时应按运算符的优先级别高低次序进行,例:()高*/%+-低 如:a-b*c 相当于 a-(b*c),2)结合性:先按运算符的优先级别高低依次进行.若在一个运算对象两侧的运算符的优先级相同,则按规定的“结合方向”处理。算术运算符的结合方向自左向右:运算对象先与左面的运算符结合.称为 左结合性。例:a-b+c 相当于(a-b)+c,4、强制类型转换运算,作用:将一个表达式转换成所需类型 形式:(类型名)(表达式)例:(double)a(int)(x+y)(float)(5%3)说明:强制类型转换时,得到一个所需类型的中间变量,而原来变量的类型未发生变化。举例:float x=2.5;int i;i=(int)x;,5、自增,自减运算符 自增运算符记为“+”,其功能是使变量的值自增1。自减运算符记为“-”,其功能是使变量值自减1。可有以下几种形式:+i i自增1后i再参与表达式整体的其它运算。-i i自减1后i再参与表达式整体的其它运算。i+i参与表达式整体的运算后,i的值再自增1。i-i参与表达式整体的运算后,i的值再自减1。在理解和使用上容易出错的是i+和i-。特别是当它们出在较复杂的表达式或语句中时,常常难于弄清,因此应仔细分析。,注意:1)自增、自减运算符只能用于变量,而不能用于常量或表达式。如 5+(a+b)+都是不合法的。2)+和-的结合方向是“自右向左”。如-i+应理解为-(i+)而不是(-i)+3)自增、自减运算符常用于循环语句中,使循环变量自动加1,也用于指针变量,使指针指向下一个地址.,main()int i=8;printf(%dn,+i);9 printf(%dn,-i);8 printf(%dn,i+);8 printf(%dn,i-);9 printf(%dn,-i+);-8 printf(%dn,-i-);-9 i的初值为8,第2行i加1后输出为9;第3行减1后输出为8;第4行输出i为8之后再加1(为9);第5行输出i为9之后再减1(为8);第6行输出-8之后再加1(为9),第7行输出-9之后再减1(为8)。,main()int i=5,j=5,p,q;p=(i+)+(i+)+(i+);q=(+j)+(+j)+(+j);printf(%d,%d,%d,%d,p,q,i,j);ip,i+1-i,i+1-i,i+1-i j+1-j,j+1-j,j+1-j,j+j+j-q 这个程序中,对P=(i+)+(i+)+(i+)应理解为三个i相加,故P值为15。然后i再自增1三次相当于加3故i的最后值为8。而对于q 的值则不然,q=(+j)+(+j)+(+j)应理解为q先自增1,再参与运算,由于q自增1三次后值为8,三个8相加的和为24,j的最后值仍为8。,3、9 赋值运算符和赋值表达式 1、简单赋值运算符和表达式 简单赋值运算符记为“=”。由“=”连接 的式子称为赋值表达式。其一般形式为:变量=表达式 例如:x=a+b w=sin(a)+sin(b)y=i+-j 赋值表达式的功能是计算表达式的值再赋予左边 的变量。赋值运算符具有右结合性。因此 a=b=c=5 可理解为 a=(b=(c=5),关于简单赋值运算符及赋值表达式的说明:1)在其它高级语言中,赋值构成了一个语句,称为赋值语句。而在C中,把“=”定义为运算符,从而组成赋值表达式。凡是表达式可以出现的地方均可出现赋值表达式。例如,式子x=(a=5)+(b=8)是合法的。它的意义是把5赋予a,8赋予b,再把表达式a=5,b=8的值相加,和赋予x,故x应等于13。2)在语言中也可以组成赋值语句,按照语言规定,任何表达式在其未尾加上分号就构成为语句。因此,如x=8;a=b=c=5;都是赋值语句。,赋值时的类型转换 如果赋值运算符两边的数据类型不相同,系统将自动进行类型转换,即把赋值号右边的类型换成左边的类型。具体规定如下:1.实型赋予整型,舍去小数部分。前面的例子已经说明了这种情况。2.整型赋予实型,数值不变,但将以浮点形式存放,即增加小数部分(小数部分的值为0)。3.字符型赋予整型,由于字符型为一个字节,而整型为二个字节,故将字符的ASCII码值放到整型量的低八位中,高八位为0。4.整型赋予字符型,只把低八位赋予字符量。,main()int a,b=322;float x,y=8.88;char c1=k,c2;a=y;x=b;a=c1;c2=b;printf(%d,%f,%d,%c,a,x,a,c2);本例表明了上述赋值运算中类型转换的规则:a为整型,赋以实型量y值8.88后只取整数8。x为实型,赋以整型量b值322,后增加了小数部分。字符型量c1赋以a变为整型,整型量b赋予c2 后取其低八位成为字符型(b的低八位 为01000010,即十进制66,按ASCII码对应于字符B)。,2.复合赋值符及表达式 在赋值符“=”之前加上其它二目运算符可构成复合赋值符。如+=,-=,*=,=,%=,=,&=,=,|=。构成复合赋值表达式的一般形式为:变量 双目运算符=表达式 它等效于 变量=变量 运算符 表达式 例如:a+=5 等价于a=a+5 x*=y+7 等价于x=x*(y+7)r%=p 等价于r=r%p 复合赋值符这种写法,对初学者可能不习惯,但十分有利于编译处理,能提高编译效率并产生质量较高的目标代码。,3、10 逗号运算符和逗号表达式 在语言中逗号“,”也是一种运算符,称为逗号运算符。其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。其一般形式为:表达式1,表达式2 其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。,main()int a=2,b=4,c=6,x,y;y=(x=a+b),(b+c);z=(x=a+b),(b+c);printf(z=%d,y=%d,x=%d,z,y,x);a-2,b-4,c-6,x-0,y-0 x-a+b,y-x z-b+c,本例中,z等于整个逗号表达式的值,也就是表达式2的值,x是第一个表达式的值。,2.程序中使用逗号表达式,通常是要分别求逗号表达式内各表达 式的值,并不一定要求整个逗号表达式的值。3.并不是在所有出现逗号的地方都组成逗号表达式,如在变量说 明中,函数参数表中逗号只是用作各变量之间的间隔符。,对于逗号表达式还要说明几点:1.逗号表达式一般形式中的表达式1和表达式2 也可以又是逗号表达式。例如:表达式1,(表达式2,表达式3)形成了嵌套情形。因此可以把逗号表达式扩展为以下形式:表达式1,表达式2,表达式n 整个逗号表达式的值等于表达式n的值。,3、11 位运算,C语言是为描述系统而设计的,因此它具有汇编语言所能完成的一些功能。在系统软件中,常要处理二进制位的问题。例如:将一个存储单元中的各二进位左移或右移一位,两个数按位相加等等。C语言提供了位运算功能,与其他语言相比更具有其独特的优越性。所谓位运算是指进行二进制位的运算。,1.位运算和位运算符,C语言提供了下列位运算符:运算符 含 义 解 释&按位与 若两个二进位都为1,结果为1,否则为0|按位或 若两个二进位都为0,结果为0,否则为1 按位异或 若两个二进位同号,则结果为0,否则为1 单目取反 对一个二进制数按位取反:1变0,0变1 右 移 将一个二进制数全部右移,对于无符号数,左端补0;对于有符号数:正数补0,负数补 1(算术右移)。右移一位相当于除以2。,说明:1)位运算中除了外,均为二目运算符,即要求两侧各有一个运算量。2)运算量只能是整型或字符型数据,不能为实型数据。,1、&运算 例如:3&5 00000011&00000101 00000001,特殊用途:1)清零:原来数中为1的位,新数中相应位为0。2)保留某些指定位:新数中对应位为1。3)保留某一位:新数中该位取1。,2、|运算 例如:3&5 00000011|00000101 00000111,3、运算 例如:3&5 00000011 00000101 00000110,3、运算特殊用途 1)使特定位翻转:新数翻转位 置1。2)保留原值:与0相 3)交换两个数,不用临时变量。,4、运算 例如:5 00000101 11111010,运算符的优先级比算术运算符、关系运算符、逻辑运算符和其他位运算符都高,例如:a&b,先进行a运算,然后进行&运算。,5、左移运算符00111100 左移1位相当于该数乘以2。但此结论只适合于该数左移时舍弃位中不包含1的情况。,6、右移运算符 例如:a=15;a=a2;00001111=00000011 右移1位相当于该数除以2。但是需注意到符号位问题。,7、位运算赋值运算符 位运算符与赋值运算符可以组成复合赋值运算符 如:&=,|=,=,=,=例如:a&=b 相当于 a=a&b.,8、不同长度数据进行位运算 如果两个数据长度不同,进行位运算时,系统会将二者按右端对齐。如:a&b(a为long,b为int)注意:如果b为正数,则左侧16位补0。若b为负数,左侧补满1。如果b为无符号整数,则左侧补满0。,小 结 1.的数据类型 基本类型,构造类型,指针类型,空类型2.基本类型的分类及特点 类型说明符 字节 数值范围 字符型 char 1 C字符集 基本整型 int 2-3276832767 短整型 short int 2-3276832767 长整型 long int 4-231231-1 无符号型 unsigned 2 065535 无符号长整型 unsigned long 4 0232-1 单精度实型 float 4 10-3810+38 双精度实型 double 8 10-30810+308,3.常量前缀、后缀 前缀:八进制整常数加0 十六进制整常数加0X或0 x 后缀?长整型加L或l 4.常量类型 整数,长整数,无符号数,浮点数,字符,字符串,符号常数,转义字符。5.数据类型转换自动转换:在不同类型数据的混合运算中,由系统自动实现转换,由少字节类型向多字节类型转换。不同类型的量相互赋值时也由系统自动进行转换,把赋值号右边的类型转换为左边的类型。强制转换:由强制转换运算符完成转换。,7.表达式 表达式是由运算符连接常量、变量、函数所组成的式子。每个表达式都有一个值和类型。表达式求值按运算符的优先级和结合性所规定的顺序进行。,6.运算符优先级和结合性 一般而言,单目运算符优先级较高,赋值运算符优先级低。算术运算符优先级较高,关系和逻辑运算符优先级较低。多数运算符具有左结合性,单目运算符、三目运算符、赋值运算符具有右结合性。,8.位运算符:运算符 含 义&按位与|按位或 按位异或 单目取反 右 移,

    注意事项

    本文(第三章数据类型运算符与表达式.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开