数据类型运算符和表达式.ppt
《数据类型运算符和表达式.ppt》由会员分享,可在线阅读,更多相关《数据类型运算符和表达式.ppt(45页珍藏版)》请在装配图网上搜索。
,第二章,数据类型、运算符与表达式,什么是数据类型?,数据结构+算法=程序,,C语言中以“数据类型”形式存在,对数据的描述,对操作的描述,2.1C语言的基本数据类型,C语言提供了以下一些数据类型。,数据类型,指针类型,空类型(无值类型)void,,基本类型,概念:在程序运行过程中,其值不能被改变的量。在程序中以两种形式出现:直接常量(字面常量)和符号常量。,2.2.1整型常量(1)十进制整数。如:123,-456,4。√045,12D(2)八进制整数。以0头的数是八进制数,通常是无符号数。如:0123,073,0101。017777。√256,03A2(3)十六进制整数。以0 x开头的数是16进制数,通常是无符号数。如:0 x123,0 xffff。√023,23D,2.2常量,,两种表示形式,,小数0.123指数3e-3,注意:字母e(或E)之前必须有数字,且e/E后面的指数必须为整数:,1e3、1.8e-3、-123e-6、-.1e-3e3、2.1e3.5、.e3、e,2.2.2实型常量,规范化的指数形式:在字母e(或E)之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字。例如:123.456可以表示为:123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,其中的1.23456e2称为“规范化的指数形式”。,2.2.3字符常量,(1)用单引号括起来的一个字符是字符型常量(2)只能包含一个字符,例,‘a’,’A’,‘1’√‘abc’、“a”,C语言还允许使用一种特殊形式的字符常量,就是以反斜杠"\"开头的转义字符。,例2.1转义字符的使用#includevoidmain(){inta,b,c;a=1;b=2;c=3;printf(“%d\n\t%d%d\n%d%d\t\b%d\n”,a,b,c,a,b,c);},显示屏上的运行结果:123123,2.2.4字符串常量,字符串常量是一对双撇号括起来的字符序列合法的字符串常量:“Howdoyoudo.”,“CHINA”,“a”,“$123.45”可以输出一个字符串,如printf(“Howdoyoudo.”);,字符与字符串的区别有哪些?,2.2.5符号常量,用一个标识符代表一个常量。,格式:#define常量名字面常量举例:#definePRICE100#definePI3.14#defineC1’a’,习惯上常量名用大写,符号常量的定义放在函数外面。,例2.2符号常量的使用#definePRICE30#includevoidmain(){intnum,total;num=10;total=num*PRICE;printf(″total=%d\n″,total);},标识符就是一个名字,在程序执行过程中,可以改变的量称为变量。,1、标识符就是一个名字(如常量名、变量名、函数名…)。2、组成:只能由字母、数字、下划线组成。且第一个字符必须为字母或下划线。例:sum,_total,month,Student_name,BASIC,li_ling√M.D.John,¥123,3D64,a>b3、C语言的关键字不能用作变量名。4、在选择变量名和其它标识符时,应注意做到“见名知意”,即选有含意的英文单词(或其缩写)作标识符。例如,name(姓名)、age(年龄)5、建议变量名的长度最好不要超过8个字符。,标识符,2.3变量,2.3.1整型变量,类型类型说明符长度数的范围基本型int2字节-32768~32767短整型short2字节-215~215-1长整型long4字节-231~231-1无符号整型unsigned2字节0~65535无符号短整型unsignedshort2字节0~65535无符号长整型unsignedlong4字节0~(232-1),1、整型变量的分类,2、整型变量的说明程序中用到的变量必须“先说明,后使用”。,变量说明的一般格式:类型说明符变量名,变量名,…;例如:inta,b;(指定变量a、b为整型)unsignedshortc,d;(指定变量c、d为无符号短整型)longe,f;(指定变量e、f为长整型),3、整型常量的后缀,(1)一个整数,如果其值在-32768~+32767范围内,认为它是int型。(2)一个整数,如果其值超过了上述范围,而在-2147483637~+2147483647范围内,则认为它是为长整型。(3)一个整常量后面加一个字母u或U,认为是unsignedint型,如12345u。4)在一个整常量后面加一个字母l或L,则认为是longint型常量。例如:123l432L0L,2.3.2实型变量,类型位数数的范围有效数字float3210-37~10386~7位double型6410-307~1030815~16位longdouble12810-4931~10493218~19位,1、实型变量的分类(单精度型、双精度型、长双精度型),2、实型变量的说明floata,b;(指定变量a,b为单精度型)doublec,d;(指定变量c,d为双精度型),3、实型常量的后缀实型常数,系统按双精度来处理,但如是在数的后面加字母f或F(如1.65f,64.87F),这样编译系统就会把它们按单精度处理。,例2.3float和double的应用#includevoidmain(){floata;doubleb;a=5555.55555;b=5555.5555555555;printf(“%f\n%f”,a,b);},2.3.3字符型变量字符型变量用来存放字符常量,注意只能放一个字符。字符变量的定义形式如下:charc1,c2;可以用下面语句对c1,c2赋值:c1=‘a’;c2=‘b’;一个字符变量在内存中占一个字节。,将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单元中。例:字符变量ch中存放字符a,其ASCII码为97,在内存中以二进制形式存放,其格式如下:,ch,01100001,注意:字符型数据与整型数据在存储方式上的相似性使得两者之间可以通用。一个字符数据既可以以字符形式输出,也可以以整数形式输出。但字符型数据的表示范围是:0~255。,例2.4向字符变量赋以整数。#includevoidmain(){charc1,c2;c1=97;c2=98;printf(“%c%c\n”,c1,c2);printf(“%d%d\n”,c1,c2);},说明:在第3和第4行中,将整数97和98分别赋给c1和c2,它的作用相当于以下两个赋值语句:c1=′a′;c2=′b′;因为’a’和’b’的ASCII码为97和98,运行结果:ab9798,例2.5大小写字母的转换#includevoidmain(){charc1,c2;c1=‘a’;c2=‘b’;c1=c1-32;c2=c2-32;printf(“%c%c″,c1,c2);},说明:程序的作用是将两个小写字母a和b转换成大写字母A和B。从ASCII代码表中可以看到每一个小写字母比它相应的大写字母的ASCII码大32。C语言允许字符数据与整数直接进行算术运算。,运行结果:AB,2.4运算符与表达式,C的运算符有以下几类:,2.4.1算术运算符和算术表达式1、算术运算符+(加法运算符,或正值运算符,如:3+5、+3)-(减法运算符,或负值运算符,如:5-2、-3)*(乘法运算符,如:3*5)/(除法运算符,如:5/3)%(模运算符,或称求余运算符,如:7%4的值为3)++(自增运算符,如:i++、++i)--(自减运算符,如:i--,--i),,双目运算符左结合,,单目运算符右结合,自增、自减运算符作用是使变量的值增1或减1如:++i(在使用i之前,先使i的值加1)--i(在使用i之前,先使i的值减1)i++(在使用i之后,使i的值加1)i--(在使用i之后,使i的值减1),注意:两个整数相除的结果为整数,舍去小数部分。当商为负数时,多采用“向零取整”的方法。例:5/3=1-5/3=-1求余运算的两侧均应为整数例:5%3=2,例:假设i,j均已说明,且i=3;①j=++i;i的值先变成4,再赋给j,j的值也为4②j=i++;先将i的值3赋给j,j的值为3,然后i变为4,例2.7自增、自减运算符的应用#include“stdio.h”voidmain(){inti,m,n,j,k;i=10;m=i++;n=++i;j=i--;k=--I;printf(“%d,%d,%d,%d\n”,m,n,j,k);},2、算术表达式用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子,称为C算术表达式。运算对象包括常量、变量、函数等。例如:a*b/c-1.5+‘a’是一个合法的表达式。,2.4.2赋值运算符与赋值表达式,1、简单赋值运算符与赋值表达式赋值符号“=”就是赋值运算符,它的作用是将一个数据赋给一个变量。如“a=3”的作用是执行一次赋值操作(或称赋值运算)。把常量3赋给变量a。也可以将一个表达式的值赋给一个变量。如:b=4;a=b+3;由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”。一般形式为:例如:“a=5”是一个赋值表达式,2、变量赋初值,(1)C语言允许在定义变量的同时使变量初始化。如:inta=3;//指定a为整型变量,初值为3floatf=3.56;//指定f为浮点型变量,初值为3.56charc=‘a’;//指定c为字符变量,初值为‘a’(2)可以使被定义的变量的一部分赋初值。如:inta,b,c=5;表示指定a、b、c为整型变量,但只对c初始化,c的初值为5。相当于:inta,b,c;c=5;(3)如果对几个变量赋以同一个初值,应写成:inta=3,b=3,c=3;表示a、b、c的初值都是3。不能写成∶inta=b=c=3;,3、类型转换,赋值表达式要求左右两边的数据类型要相同,如果不一致,在赋值时要进行类型转换。包括自动转换和强制类型转换两种方法。,(1)自动类型转换,转换规则,若参与运算的运算量类型不同,则先转换成同一种类型,然后进行运算;转换按数据长度增加的方向进行,以保证精度不降低;所有实型运算都以双精度进行,即使仅含float型,也要先转换成double型,再运算。char和short型参与运算时,必须先转换为int型。在赋值运算中,赋值符号两边的数据类型不同时,把赋值号右边的类型自动换成左边变量的类型。,10+‘a’+i*f-d/e,若inti;floatf;doubled;longe;i=2;f=2.5;d=3.9;e=3;下边表达式的值是多少?,?,例2.9自动转换类型的应用#include“stdio.h”voidmain(){inta,b;floatx=23.54;charc1=‘d’;a=x;b=c1;printf(“%d,%d\n”,a,b);},(2)强制类型转换,可以利用强制类型转换运算符将一个表达式转换成所需类型。一般形式:()例如:(double)a将a转换成double类型(int)(x+y)将x+y的值转换成整型(float)(5%3)将5%3的值转换成float型,例2.10强制类型转换。#includevoidmain(){floatx;inti;x=3.6;i=(int)x;printf("x=%f,i=%d\n",x,i);},运行结果:x=3.600000,i=3,说明:有两种类型转换,一种是在运算时不必用户指定,系统自动进行的类型转换,如3+6.5。第二种是强制类型转换。当自动类型转换不能实现目的时,可以用强制类型转换。,4、复合赋值运算符及表达式,在赋值符“=”之前加上其他运算符,可以构成复合赋值运算符。例如:a+=3等价于a=a+3x*=y+8等价于x=x*(y+8)x%=3等价于x=x%3,以“a+=3”为例来说明,它相当于使a进行一次自加(3)的操作。即先使a加3,再赋给a。,注意:如果b是包含若干项的表达式,则相当于它有括号。如:①x%=y+3②x%=(y+3)③x=x%(y+3)(不要错写成x=x%y+3),5、对赋值表达式求解的过程求赋值运算符右侧的“表达式”的值;②赋给赋值运算符左侧的变量。例如:赋值表达式“a=3*5”的值为15,执行表达式后,变量a的值也是15。,赋值表达式中的“表达式”,又可以是一个赋值表达式。例如:a=(b=5)分析:请分析下面的赋值表达式∶(a=3*5)=4*3赋值表达式也可以包含复合的赋值运算符。如:a+=a-=a*a分析:若a的初值为12,则执行上述表达式后a=,?,能否写成:a=3*5=4*3,2.4.3逗号运算符与逗号表达式,逗号运算符:将两个或多个表达式连接起来,又称为“顺序求值运算符”。如:3+5,6+8,逗号表达式的一般形式:表达式1,表达式2,表达式3,……,表达式n,求解过程:从表达式1开始求解,逐个求解表达式2、表达式3、……表达式n;整个逗号表达式的值是表达式n的值。,逗号运算符是所有运算符中级别最低的。例:(1)a=3*5,a*4(2)(a=3*5,a*4),a+5(3)x=(a=3,6*3)(4)x=a=3,6*3,注意:并不是任何地方出现的逗号都是作为逗号运算符。例如函数参数也是用逗号来间隔的。如:printf(“%d,%d,%d”,a,b,c);,2.4.5关系运算符和关系表达式,关系运算符及其优先次序(从左到右)(大于)>=(大于或等于)==(等于)!=(不等于),优先级别:,如:c>a+ba==b- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据类型 运算 表达式

链接地址:https://www.zhuangpeitu.com/p-11536624.html