C程序设计第2章数据类型、运算符和表达式.ppt

上传人:tia****nde 文档编号:12805479 上传时间:2020-05-25 格式:PPT 页数:48 大小:423KB
返回 下载 相关 举报
C程序设计第2章数据类型、运算符和表达式.ppt_第1页
第1页 / 共48页
C程序设计第2章数据类型、运算符和表达式.ppt_第2页
第2页 / 共48页
C程序设计第2章数据类型、运算符和表达式.ppt_第3页
第3页 / 共48页
点击查看更多>>
资源描述
第二章数据类型、运算符和表达式,主讲:刘艳菊,第二讲数据类型、运算符和表达式,本讲内容提要:基本数据类型常量和变量常用的运算符和表达式,C+语言程序设计,2.1C+语言的数据类型,基本数据类型字符型(char)、整型(shortint、int、longint)单精度浮点型(float)、双精度浮点型(double、longdouble)布尔型(或逻辑型bool)无值型(void)构造数据类型数组结构体(struct)共用体(Union)枚举(enum)类(class)其他指针引用,数据类型、运算符和表达式,思考:为什么需要有数据类型?,2.1C+语言的数据类型,基本数据类型多种数据类型为程序提供更多的选择。各数据类型的字节数取决于具体的编程环境。,数据类型、运算符和表达式,2.1C+语言的数据类型,类型修饰符C+还允许在基本数据类型(除void类型外)前加上类型修饰符,来更具体地表示数据类型。C+的类型修饰符包括:signed有符号unsigned无符号short短型long长型,数据类型、运算符和表达式,2.1C+语言的数据类型,基本数据类型-整型整型数据可以分成有符号(signed)和无符号(unsigned)两类;每类又包含长整型(longint)、一般整型(int)和短整型(shortint)。在不同的机器、不同的操作系统和不同的C+编译器中,数据类型的表示方式各不相同:16位机,short和int占2字节,long4字节;32位机,short占2字节,int和long占4字节。整型数据的存储方式为按二进制数形式存储,例如十进制整数85的二进制形式为1010101,则在内存中的存储形式如图所示,数据类型、运算符和表达式,2.1C+语言的数据类型,基本数据类型-整型按照C+规定,各种类型的表示范围满足下面的条件:短整型整型长整型。表2-1给出了MicrosoftC+中各种整型类型的特性。,数据类型、运算符和表达式,2.1C+语言的数据类型,基本数据类型-浮点型C+中有3种浮点类型:单精度(float)、双精度(double)和长双精度(longdouble)。C+中浮点数均为有符号浮点数,没有无符号浮点数,表示精度满足下面的条件:浮点型双精度型长双精度型。,数据类型、运算符和表达式,2.1C+语言的数据类型,基本数据类型-字符型C+中有3种字符类型:字符型(char)、有符号字符型(signedchar)和无符号字符型(unsignedchar)。,数据类型、运算符和表达式,注意:字符型数据在操作时将按整型数处理。,2.1C+语言的数据类型,基本数据类型-布尔型布尔类型用于表示布尔逻辑数据,布尔逻辑数据只有两个:true和false。注意:在C+中,布尔型的数据可以作为整型数据进行运算,true为非0整数,false为整数0;整型数据也可以作为布尔型数据进行运算,非0整数为true,整数0为false。布尔类型数据可以施加逻辑运算。基本数据类型-无值型在C+语言中它用来说明函数及其参数,没有返回值的函数说明为void类型的函数,没有参数的函数其形参表由void表示,void类型的值集为一空集。,数据类型、运算符和表达式,2.2常量,在C+程序运行中,有一些数据是一直不变的,这些数据称为常量。由于程序中的数据是有类型的,所以常量是有类型的。常量的类型常量按照不同的数据类型可以分为:字符型常量、整型常量、浮点型常量,以及字符串常量等。程序是根据程序中常量的书写格式来区分它是哪种类型常量的。,数据类型、运算符和表达式,2.2常量-整型常量,整型常量在程序中书写整型常量时,没有小数部分。用户可根据需要用十进制、八进制和十六进制的形式书写。十进制格式:由数字0至9和正、负号组成,书写时直接写出数字。如:123,-516,+1000等。八进制格式:以数字0开头的数字(0至7)序列。如:0111,010007,0177777等。十六进制格式:以0 x或0X开头的数字(数字0至9、字母a至z)序列。如:0 x78AC,0 xFFFF等。,数据类型、运算符和表达式,2.2常量-浮点型常量,浮点型常量只能用十进制来表示。可以用小数或指数形式表示,不分单精度和双精度类型。小数格式35.125.(5.0).5(0.5)指数格式33.5E1浮点常量默认类型为double若-35.8f,0.314e-3f(强制为float)若0.5L(强制为longdouble),数据类型、运算符和表达式,指数的写法:1、e前必须有数字2、e后必须是整数非法:e-03,1.2e+0.5,2.2常量-字符型常量,字符型常量用一对单引号括起来的一个字符,单引号只是字符与其他部分的分割符,不是字符的一部分,并且,不能用双引号代替单引号。在单引号中的字符不能是单引号或反斜杠。如:a,A,#合法的字符常量,非法的字符常量“A”不代表字符常量,数据类型、运算符和表达式,H,$单引号括起来的ASCII字符Ax41101n,转意字符,非ASCII字符,2.2常量-字符型常量,转义字符采用反斜杠后跟一个字母来代表一个控制字符,具有新的含义。,数据类型、运算符和表达式,2.2常量-字符串常量,字符串常量用一对双引号括起来的字符的序列称为字符串常量或字符串。字符串以双引号为定界符,双引号不作为字符串的一部分。如:“Hello”,“GoodMorning!”,“Isay:“Goodbye!”注意:字符串常量占用连续的存储单元,在最后的字符后面加一个字符0作为字符串结束标志。例如,如果字符变量C1的值为A,C2的值为B,则在变量中存放的是A的ASCII码65,B的ASCII码66,在内存中以二进制形式存放。,数据类型、运算符和表达式,“a”和a的差别?,字符常量用单引号,而字符串常量用双引号“”;字符常量在内存中占一个字节,而字符串都有一个结束符(0);他们具有的操作功能不同,字符有加减运算。a-b+1“a”-“b”+1,2.2常量-例2.1,例2.1将字符A和B赋给整型变量。用一对双引号括起来的字符的序列称为字符串常量或字符串。,数据类型、运算符和表达式,#include/预处理命令voidmain()/主函数首部/函数体开始intx,y;/定义整型变量x和yx=A;/将一个字符常量A赋给整型变量xy=B;/将一个字符常量B赋给整型变量ycoutx=xn;/输出整型变量x的值,n是换行符相当于endl;couty=yendl;/输出整型变量y的值/函数结束,x=65y=66,2.2常量-符号常量,符号常量常量也可用一个标识符来代表,称为符号常量。如:#definePRICE30使用符号常量的好处:含义清楚;在需要改变一个常量时可“一改全改”。使用符号常量应注意以下几个方面:它不同于变量,在作用域内其值不能改变和赋值。如:在上例中如再用PRICE=40;这一语句进行赋值则是错误的。符号常量名一般用大写,而变量名用小写,以示区别。,数据类型、运算符和表达式,在程序中任何要改变符号常量的企图都将导致编译错误,2.2常量-例2.2,例2.2符号常量的使用,数据类型、运算符和表达式,#definePRICE10/定义符号常量PRICE。注意此行不是语句,末尾不要加分号#include/预处理命令voidmain()/主函数首部/函数体开始intn,sum;/定义整型变量n和sumn=5;/将整数5赋给整型变量nsum=n*PRICE;/将n与PRICE的乘积赋给整型变量sumcoutn=nn;/输出整型变量n的值coutPRICE=PRICEn;/输出符号常量PRICE的值coutsum=sumn;/输出整型变量sum的值/函数结束,n=5PRICE=10sum=50,2.2常量-综合例子,综合例子:,数据类型、运算符和表达式,longinta=3L;uignedintb=0 x5A3;floatc=33.5E1;/floatc=e+0.3;doubled=.5;chare=A;/chare=n;char*f=“hello!n”;constfloatMaxSize=20;floatsize=MaxSize*100;,2.3变量,变量的概念和特点每一变量就相当于一个容器,对应着计算机内存中的某一块存储单元,用于存储程序中的数据。变量的名字变量的名字同标识符的命名规则。保留字不能作为变量名、函数名、类型名的使用。尽量“见名知意”。如,m_Price一般使用命名约定,如著名的匈牙利命名约定。如,strName,数据类型、运算符和表达式,变量名为m_Price,变量值为2.0,变量的地址,1.50,2.3变量-定义,定义变量程序中的每一变量,都要先定义,后使用。定义变量的一般有以下三种格式:数据类型变量名;数据类型变量名=初始化值;数据类型变量名1=初始值1,变量名2=初始值2,;如:chara;/定义字符型变量ainti=1000;/定义整型变量i,i的初始值为1000;floata=2,b=3,c;/定义浮点型变量且a、b的初始值分别为2、3。变量定义的位置比较灵活,数据类型、运算符和表达式,在定义变量时,可以在类型前指定存储类型:auto(可以省略)、register、static、extern,2.4运算符和表达式,运算符和表达式运算是对数据的处理过程,表示各种不同运算的符号称为运算符,被处理的数据,也就是参与运算的数据称为操作数(包括变量与常量)。而运算符与操作数组成表达式。一个表达式的类型是由运算符的种类和操作数的类型决定的。运算可分为单目运算、双目运算以及三目、多目运算。优先级优先级是用来标志运算符在表达式中的运算顺序的。优先级相同的由结合性决定计算顺序。结合性结合性即结合方向是决定运算顺序的一种标志。从左到右,从右到左,数据类型、运算符和表达式,1.算术运算符和表达式,算术运算符和算术表达式算术运算符单目运算符:+,-(正负号)双目运算符:+,-,*,/,%(求余)结合方向:从左向右优先级:*/%+-算术表达式是指由算术运算符、括号将常量、变量、函数、圆括号等连接形成的一个有意义的式子。(2*x-3)*x+2)*x)-5或3.14*sqrt(r),数据类型、运算符和表达式,例:5/2=2-5/2.0=-2.5,例:5%2=1-5%2=-11%10=15%1=05.5%2(),-5%3与5/-3的结果相同吗?,注意:“-”为单目运算符时,为负号运算符,右结合性。两整数相除(/),结果为整数。参加+、-、*、/运算的两个数中有一个为实数,则结果是double型,因为所有的实数都按double型进行运算。%要求两侧均为整型数据。表达式中的括号一律使用圆括号。,1.算术运算符和表达式,自增和自减运算符作用使变量的值增1或减1。种类:前置+i,-i(先执行i+1或i-1,再使用i值)后置i+,i-(先使用i值,再执行i+1或i-1),数据类型、运算符和表达式,例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,1.算术运算符和表达式,自增和自减运算符说明:+-不能用于常量和表达式如5+,(a+b)+-结合方向:自右向左优先级:+-与+-同级,数据类型、运算符和表达式,例:-i+;i=3;printf(“%d”,-i+);,注意:尽可能多地(从左至右)将若干字符组成一个运算符,2.关系运算符和表达式,关系运算符和关系表达式关系运算符就是对两个量之间进行比较的运算符,如下表所示。,数据类型、运算符和表达式,2.关系运算符和表达式,关系运算符和关系表达式由关系运算符将两个表达式连接形成的运算式子是关系表达式,一个关系表达式的值是一个逻辑值,当为真时,值为1,为假时,值为0。如:假设a=1,b=20,c=3,则ac)的值为1(真)。,数据类型、运算符和表达式,3.逻辑运算符和表达式,逻辑运算符和逻辑表达式在计算逻辑表达式时,C+遵循一种所谓“短路计算法”:在逻辑表达式的求值过程中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的值时,才执行该运算符。a则表达式i+|i+|i+的值为1(真),运算结束后,变量i的值为2,而不是4。,数据类型、运算符和表达式,3.逻辑运算符和表达式,逻辑运算符和逻辑表达式逻辑表达式的使用注意事项:对于数学上的表示多个数据间进行比较的表达式,在C或C+中要拆写成多个条件并用逻辑运算符连接形成一个逻辑表达式。如:在数学上,要表示一个变量a的值处于-1和-9之间时,可以用-9-9,数据类型、运算符和表达式,5.赋值运算符和表达式,赋值运算符和赋值表达式赋值运算符的功能将某个数据的值赋给某个变量。赋值运算符的用法格式:变量名赋值运算符常量、变量或表达式说明:被赋值的目标,即赋值运算符左边的量必须是变量,而不能是常量或表达式。,数据类型、运算符和表达式,5.赋值运算符和表达式,赋值运算符和赋值表达式说明:C+中的赋值运算符如下表所示。,数据类型、运算符和表达式,5.赋值运算符和表达式,赋值运算符和赋值表达式说明:要注意区分赋值运算符“=”与数学上的“等号”间的区别,如:intx,y;/定义变量x,y为int类型变量x=10;/将变量x赋成值10 x=x+20;/将x的值在原值(10)的基础上再加上值20后(结果为30)赋给变量xy-=x+5;/等价于y=y-(x+5);右边表达式的值为30-(31+5)=-6,y被赋成值-6x%=y+10;/等价于x=x%(y+10);右边表达式的值为31%(-6+10)=3,y被赋成值3,数据类型、运算符和表达式,5.赋值运算符和表达式,复合位运算符位运算符与赋值运算符结合可以形成复合位运算符,如下表所示。,数据类型、运算符和表达式,6.其他运算符-sizeof运算符,sizeof运算符sizeof运算符功能是求某一数据类型或某一变量在内存中所占空间的字节数。其使用的一般形式:sizeof(变量名或数据类型)或sizeof变量名或数据类型举例,数据类型、运算符和表达式,例:#includevoidmain()shortaShort;intanInt;longaLong;charaChar;floataFloat;coutdatatypetmemoryused(bytes);coutnshortinttsizeof(aShort);coutnintegertsizeof(anInt);coutnlongintegertsizeof(aLong);coutncharachartsizeof(aChar);coutnfloattsizeof(aFloat);coutndoubletsizeof(double);coutnlongdoublet”,7.运算符的优先级与结合性,运算符的优先级与结合性每个运算符都有自己优先级和结合性。当一个表达式中包含多个运算符时,要确定运算的结果,必须首先确定运算的先后顺序,即运算符的优先级和结合性。为便于记忆可参考下面提供的记忆方法:去掉一个最高的元素/成员,去掉一个最低的逗号,剩下是一、二、三赋值;算术、关系和逻辑,移位、逻辑位插中间。意义是最高优先级的是元素/成员,优先级最低的是逗号,剩下的是单目运算符、双目运算符、三目运算符和赋值运算符。双目运算符优先级的关系是先算术,再关系,后逻辑,移位和逻辑位插在算术和关系之间。结合性即结合方向是决定运算顺序的一种标志。在优先级相同的情况下,表达式的计算顺序便由结合性来确定。结合方向分为二类:从左到右的,按人们习惯的计算顺序;从右到左的,只有3类运算符有单目、三目和赋值。C+中运算符的优先级和结合性如下表所示。,数据类型、运算符和表达式,7.运算符的优先级与结合性,运算符的优先级与结合性,数据类型、运算符和表达式,小结,程序中的数据程序的核心任务是对数据进行加工和处理。在C+中任何数据是有类型的,不同的数据类型的关键字不同,所占存储单元的大小不同,因而表示数的范围大小也不同。另外,根据数据在程序运行过程中是否发生变化将数据分为常量和变量,常量的值固定不变且数据类型是由用户在程序中的书写格式来决定,而变量则必须在程序中进行明确的定义,即定义其名称和类型,在程序中,任何变量都要遵循先定义后使用的规则。,数据类型、运算符和表达式,小结,运算符和表达式C+为每种运算符规定了一个运算的优先级和结合性,以控制各种运算的顺序,利用圆括号可以改变表达式的运算顺序。当在表达式中进行运算的数据类型不同时,C+将自动进行隐式转换,当然,用户也可利用强制类型转换的方法进行转换。,数据类型、运算符和表达式,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!