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

上传人:小飞机 文档编号:6503633 上传时间:2023-11-07 格式:PPT 页数:48 大小:295.50KB
返回 下载 相关 举报
C程序设计第2章数据类型、运算符和表达式.ppt_第1页
第1页 / 共48页
C程序设计第2章数据类型、运算符和表达式.ppt_第2页
第2页 / 共48页
C程序设计第2章数据类型、运算符和表达式.ppt_第3页
第3页 / 共48页
C程序设计第2章数据类型、运算符和表达式.ppt_第4页
第4页 / 共48页
C程序设计第2章数据类型、运算符和表达式.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

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

1、第二章 数据类型、运算符和表达式,主讲:刘艳菊,第二讲 数据类型、运算符和表达式,本讲内容提要:基本数据类型常量和变量常用的运算符和表达式,C+语言程序设计,2.1C+语言的数据类型,基本数据类型字符型(char)、整型(short int、int、long int)单精度浮点型(float)、双精度浮点型(double、long double)布尔型(或逻辑型bool)无值型(void)构造数据类型数组结构体(struct)共用体(Union)枚举(enum)类(class)其他指针引用,数据类型、运算符和表达式,思考:为什么需要有数据类型?,2.1C+语言的数据类型,基本数据类型多种数据类

2、型为程序提供更多的选择。各数据类型的字节数取决于具体的编程环境。,数据类型、运算符和表达式,2.1C+语言的数据类型,类型修饰符C+还允许在基本数据类型(除void类型外)前加上类型修饰符,来更具体地表示数据类型。C+的类型修饰符包括:signed有符号unsigned无符号short短型long长型,数据类型、运算符和表达式,2.1C+语言的数据类型,基本数据类型-整型整型数据可以分成有符号(signed)和无符号(unsigned)两类;每类又包含长整型(long int)、一般整型(int)和短整型(short int)。在不同的机器、不同的操作系统和不同的C+编译器中,数据类型的表示方

3、式各不相同:16位机,short和int占2字节,long4字节;32位机,short占2字节,int和long占4字节。整型数据的存储方式为按二进制数形式存储,例如十进制整数85的二进制形式为1010101,则在内存中的存储形式如图所示,数据类型、运算符和表达式,2.1C+语言的数据类型,基本数据类型-整型按照C+规定,各种类型的表示范围满足下面的条件:短整型整型长整型。表2-1给出了Microsoft C+中各种整型类型的特性。,数据类型、运算符和表达式,2.1C+语言的数据类型,基本数据类型-浮点型C+中有3种浮点类型:单精度(float)、双精度(double)和长双精度(long d

4、ouble)。C+中浮点数均为有符号浮点数,没有无符号浮点数,表示精度满足下面的条件:浮点型双精度型长双精度型。,数据类型、运算符和表达式,2.1C+语言的数据类型,基本数据类型-字符型C+中有3种字符类型:字符型(char)、有符号字符型(signed char)和无符号字符型(unsigned char)。,数据类型、运算符和表达式,注意:字符型数据在操作时将按整型数处理。,2.1C+语言的数据类型,基本数据类型-布尔型布尔类型用于表示布尔逻辑数据,布尔逻辑数据只有两个:true和false。注意:在C+中,布尔型的数据可以作为整型数据进行运算,true为非0整数,false为整数0;整型

5、数据也可以作为布尔型数据进行运算,非0整数为true,整数0为false。布尔类型数据可以施加逻辑运算。基本数据类型-无值型在C+语言中它用来说明函数及其参数,没有返回值的函数说明为void类型的函数,没有参数的函数其形参表由void表示,void类型的值集为一空集。,数据类型、运算符和表达式,2.2常量,在C+程序运行中,有一些数据是一直不变的,这些数据称为常量。由于程序中的数据是有类型的,所以常量是有类型的。常量的类型常量按照不同的数据类型可以分为:字符型常量、整型常量、浮点型常量,以及字符串常量等。程序是根据程序中常量的书写格式来区分它是哪种类型常量的。,数据类型、运算符和表达式,2.2

6、常量-整型常量,整型常量在程序中书写整型常量时,没有小数部分。用户可根据需要用十进制、八进制和十六进制的形式书写。十进制格式:由数字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.12 5.(5.0).5(0.5)指数格式

7、33.5E1浮点常量默认类型为double若-35.8f,0.314e-3f(强制为float)若0.5L(强制为long double),数据类型、运算符和表达式,指数的写法:1、e前必须有数字 2、e后必须是整数非法:e-03,1.2e+0.5,2.2常量-字符型常量,字符型常量用一对单引号括起来的一个字符,单引号只是字符与其他部分的分割符,不是字符的一部分,并且,不能用双引号代替单引号。在单引号中的字符不能是单引号或反斜杠。如:a,A,#合法的字符常量,非法的字符常量“A”不代表字符常量,数据类型、运算符和表达式,H,$单引号括起来的ASCII字符 A x41101n,转意字符,非ASC

8、II字符,2.2常量-字符型常量,转义字符采用反斜杠后跟一个字母来代表一个控制字符,具有新的含义。,数据类型、运算符和表达式,2.2常量-字符串常量,字符串常量用一对双引号括起来的字符的序列称为字符串常量或字符串。字符串以双引号为定界符,双引号不作为字符串的一部分。如:“Hello”,“Good Morning!”,“I say:“Goodbye!”注意:字符串常量占用连续的存储单元,在最后的字符后面加一个字符0作为字符串结束标志。例如,如果字符变量C1的值为A,C2的值为 B,则在变量中存放的是A 的ASCII码65,B 的ASCII码66,在内存中以二进制形式存放。,数据类型、运算符和表达

9、式,“a”和 a 的差别?,字符常量用单引号,而字符串常量用双引号“”;字符常量在内存中占一个字节,而字符串都有一个结束符(0);他们具有的操作功能不同,字符有加减运算。a-b+1“a”-“b”+1,2.2常量-例2.1,例2.1 将字符A和B赋给整型变量。用一对双引号括起来的字符的序列称为字符串常量或字符串。,数据类型、运算符和表达式,#include/预处理命令void main()/主函数首部/函数体开始 int x,y;/定义整型变量x和y x=A;/将一个字符常量A赋给整型变量x y=B;/将一个字符常量B赋给整型变量y coutx=xn;/输出整型变量x的值,n是换行符相当于end

10、l;couty=yendl;/输出整型变量y的值/函数结束,x=65y=66,2.2常量-符号常量,符号常量 常量也可用一个标识符来代表,称为符号常量。如:#define PRICE 30使用符号常量的好处:含义清楚;在需要改变一个常量时可“一改全改”。使用符号常量应注意以下几个方面:它不同于变量,在作用域内其值不能改变和赋值。如:在上例中如再用PRICE=40;这一语句进行赋值则是错误的。符号常量名一般用大写,而变量名用小写,以示区别。,数据类型、运算符和表达式,在程序中任何要改变符号常量的企图都将导致编译错误,2.2常量-例2.2,例2.2符号常量的使用,数据类型、运算符和表达式,#def

11、ine PRICE 10/定义符号常量PRICE。注意此行不是语句,末尾不要加分号#include/预处理命令void main()/主函数首部/函数体开始 int n,sum;/定义整型变量n和sum n=5;/将整数5赋给整型变量n sum=n*PRICE;/将n与PRICE的乘积赋给整型变量sum coutn=nn;/输出整型变量n的值 coutPRICE=PRICEn;/输出符号常量PRICE的值 coutsum=sumn;/输出整型变量sum的值/函数结束,n=5PRICE=10sum=50,2.2常量-综合例子,综合例子:,数据类型、运算符和表达式,long int a=3L;ui

12、gned int b=0 x5A3;float c=33.5E1;/float c=e+0.3;double d=.5;char e=A;/char e=n;char*f=“hello!n”;const float MaxSize=20;float size=MaxSize*100;,2.3变量,变量的概念和特点每一变量就相当于一个容器,对应着计算机内存中的某一块存储单元,用于存储程序中的数据。变量的名字变量的名字同标识符的命名规则。保留字不能作为变量名、函数名、类型名的使用。尽量“见名知意”。如,m_Price一般使用命名约定,如著名的匈牙利命名约定。如,strName,数据类型、运算符和表

13、达式,变量名为m_Price,变量值为2.0,变量的地址,1.50,2.3变量-定义,定义变量程序中的每一变量,都要先定义,后使用。定义变量的一般有以下三种格式:数据类型 变量名;数据类型 变量名=初始化值;数据类型 变量名1=初始值1,变量名2=初始值2,;如:char a;/定义字符型变量aint i=1000;/定义整型变量i,i的初始值为1000;float a=2,b=3,c;/定义浮点型变量 且a、b的初始值分别为2、3。变量定义的位置比较灵活,数据类型、运算符和表达式,在定义变量时,可以在类型前指定存储类型:auto(可以省略)、register、static、extern,2.

14、4运算符和表达式,运算符和表达式运算是对数据的处理过程,表示各种不同运算的符号称为运算符,被处理的数据,也就是参与运算的数据称为操作数(包括变量与常量)。而运算符与操作数组成表达式。一个表达式的类型是由运算符的种类和操作数的类型决定的。运算可分为单目运算、双目运算以及三目、多目运算。优先级优先级是用来标志运算符在表达式中的运算顺序的。优先级相同的由结合性决定计算顺序。结合性结合性即结合方向是决定运算顺序的一种标志。从左到右,从右到左,数据类型、运算符和表达式,1.算术运算符和表达式,算术运算符和算术表达式算术运算符单目运算符:+,-(正负号)双目运算符:+,-,*,/,%(求余)结合方向:从左

15、向右优先级:*/%+-算术表达式是指由算术运算符、括号将常量、变量、函数、圆括号等连接形成的一个有意义的式子。(2*x-3)*x+2)*x)-5 或 3.14*sqrt(r),数据类型、运算符和表达式,例:5/2=2-5/2.0=-2.5,例:5%2=1-5%2=-1 1%10=1 5%1=0 5.5%2(),-5%3与5/-3的结果相同吗?,注意:“-”为单目运算符时,为负号运算符,右结合性。两整数相除(/),结果为整数。参加+、-、*、/运算的两个数中有一个为实数,则结果是double型,因为所有的实数都按double型进行运算。%要求两侧均为整型数据。表达式中的括号一律使用圆括号。,1.

16、算术运算符和表达式,自增和自减运算符 作用使变量的值增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)+-结合方向:自右向左优先级:+-

17、与+-同级,数据类型、运算符和表达式,例:-i+;i=3;printf(“%d”,-i+);,注意:尽可能多地(从左至右)将若干字符组成一个运算符,2.关系运算符和表达式,关系运算符和关系表达式关系运算符就是对两个量之间进行比较的运算符,如下表所示。,数据类型、运算符和表达式,2.关系运算符和表达式,关系运算符和关系表达式由关系运算符将两个表达式连接形成的运算式子是关系表达式,一个关系表达式的值是一个逻辑值,当为真时,值为1,为假时,值为0。如:假设a=1,b=20,c=3,则ab表达式成立,其值为1b=c表达式不成立,其值为0(a+b)!=c表达式成立,其值为1注意:在对两个表达式的值进行是

18、否相等的比较时,要用运算符“=”,而不能写成“=”。,数据类型、运算符和表达式,3.逻辑运算符和表达式,逻辑运算符和逻辑表达式逻辑运算符是对两个逻辑量间进行运算的运算符,如下表所示。由逻辑运算符将两个表达式连接形成的式子叫逻辑表达式。对于参加逻辑运算的操作数,系统认为“非0”为真,“0”为假。而逻辑表达式的结果只能为逻辑真(1)或逻辑假(0)。,数据类型、运算符和表达式,C+语言中,运算量:0表示“假”,非0表示真,运算结果:0表示“假”,1表示“真”,3.逻辑运算符和表达式,逻辑运算符和逻辑表达式逻辑运算真值表注意:C或C+中在给出一个逻辑表达式的最终计算结果值时,用1表示真,用0表示假。但

19、在进行逻辑运算的过程中,凡是遇到非零值时就当真值参加运算,遇到0值时就当假值参加运算。如:int a=10,b=15,c=14;则(a+6)&(bc)的值为1(真)。,数据类型、运算符和表达式,3.逻辑运算符和表达式,逻辑运算符和逻辑表达式在计算逻辑表达式时,C+遵循一种所谓“短路计算法”:在逻辑表达式的求值过程中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的值时,才执行该运算符。a 则表达式i+|i+|i+的值为1(真),运算结束后,变量i的值为2,而不是4。,数据类型、运算符和表达式,3.逻辑运算符和表达式,逻辑运算符和逻辑表达式逻辑表达式的使用注意事项:

20、对于数学上的表示多个数据间进行比较的表达式,在C或C+中要拆写成多个条件并用逻辑运算符连接形成一个逻辑表达式。如:在数学上,要表示一个变量a的值处于-1和-9之间时,可以用-9-9&a-9&a-1的形式。,数据类型、运算符和表达式,4.位运算符,位运算符所谓位运算符是指能进行二进制位运算的运算符。C+提供的位运算符如下表所示。,数据类型、运算符和表达式,4.位运算符,逻辑位运算符位运算的运算规则按位与,数据类型、运算符和表达式,4.位运算符,移位运算符移位运算的运算规则按位左移将操作数中的每一位向右移动指定的位数,移出的位被舍弃,空出的位补0或补符号位。例如:char a=37,b=44;,数

21、据类型、运算符和表达式,5.赋值运算符和表达式,赋值运算符和赋值表达式赋值运算符的功能将某个数据的值赋给某个变量。赋值运算符的用法格式:变量名 赋值运算符 常量、变量或表达式说明:被赋值的目标,即赋值运算符左边的量必须是变量,而不能是常量或表达式。,数据类型、运算符和表达式,5.赋值运算符和表达式,赋值运算符和赋值表达式说明:C+中的赋值运算符如下表所示。,数据类型、运算符和表达式,5.赋值运算符和表达式,赋值运算符和赋值表达式说明:要注意区分赋值运算符“=”与数学上的“等号”间的区别,如:int x,y;/定义变量x,y为int类型变量x=10;/将变量x赋成值10 x=x+20;/将x的值

22、在原值(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(变量名或数据类型)或 sizeo

23、f 变量名或数据类型举例,数据类型、运算符和表达式,例:#include void main()short aShort;int anInt;long aLong;char aChar;float aFloat;coutdata typetmemory used(bytes);coutnshort inttsizeof(aShort);coutninteger tsizeof(anInt);coutnlong integertsizeof(aLong);coutnchar achartsizeof(aChar);coutnfloat tsizeof(aFloat);coutndouble ts

24、izeof(double);coutnlong doubletsizeof(long double);,data type memory used(bytes)short int 2integer 4long integer 4char achar 1float 4double 8long double 8,6.其他运算符-条件运算符,条件运算符在C+中只提供了一个三目运算符即条件运算符“?:”,其一般形式为:表达式1?表达式2:表达式3条件运算的规则是:首先判断表达式1的值,若其值为真(非0),则取表达式2的值为整个表达式的值;若其值为假(0),则取表达式3的值为整个表达式的值。如:若a=3

25、,b=4,则条件表达式ab?a:b的值为4。,数据类型、运算符和表达式,6.其他运算符-强制类型转换运算符,强制类型转换运算符该运算符的功能是将某一数据从一种数据类型向另一种数据类型进行转换。其使用的一般形式:数据类型标识符(表达式)(数据类型标识符)表达式如:int i=2;float a,b;a=float(i);/将变量i的值强制转换为浮点型,并赋给变量ab=(float)i;/将变量i的值强制转换为浮点型,并赋给变量b,数据类型、运算符和表达式,6.其他运算符-逗号运算符,逗号运算符逗号运算符的运算优先级是最低的。一般形式为:表达式1,表达式2,表达式N在计算逗号表达式的值时,按从左至

26、右的顺序依次分别计算各个表达式的值,而整个逗号表达式的值和类型是由最右边的表达式决定。如:有语句int a=3,b=4;则表达式a+,b+,a+b的值为9。再如:设有int i;则表达式i=1,i+=2?i+1:i+4的值为6。,数据类型、运算符和表达式,6.其他运算符,其他运算符指针运算符*函数调用符()动态分配符 new delete 数组下标运算符 限定运算符 作用域限定符“:”成员选择符“.”和“-”,7.运算符的优先级与结合性,运算符的优先级与结合性每个运算符都有自己优先级和结合性。当一个表达式中包含多个运算符时,要确定运算的结果,必须首先确定运算的先后顺序,即运算符的优先级和结合性

27、。为便于记忆可参考下面提供的记忆方法:去掉一个最高的元素/成员,去掉一个最低的逗号,剩下是一、二、三赋值;算术、关系和逻辑,移位、逻辑位插中间。意义是最高优先级的是元素/成员,优先级最低的是逗号,剩下的是单目运算符、双目运算符、三目运算符和赋值运算符。双目运算符优先级的关系是先算术,再关系,后逻辑,移位和逻辑位插在算术和关系之间。结合性即结合方向是决定运算顺序的一种标志。在优先级相同的情况下,表达式的计算顺序便由结合性来确定。结合方向分为二类:从左到右的,按人们习惯的计算顺序;从右到左的,只有3类运算符有单目、三目和赋值。C+中运算符的优先级和结合性如下表所示。,数据类型、运算符和表达式,7.

28、运算符的优先级与结合性,运算符的优先级与结合性,数据类型、运算符和表达式,小结,程序中的数据程序的核心任务是对数据进行加工和处理。在C+中任何数据是有类型的,不同的数据类型的关键字不同,所占存储单元的大小不同,因而表示数的范围大小也不同。另外,根据数据在程序运行过程中是否发生变化将数据分为常量和变量,常量的值固定不变且数据类型是由用户在程序中的书写格式来决定,而变量则必须在程序中进行明确的定义,即定义其名称和类型,在程序中,任何变量都要遵循先定义后使用的规则。,数据类型、运算符和表达式,小结,运算符和表达式C+为每种运算符规定了一个运算的优先级和结合性,以控制各种运算的顺序,利用圆括号可以改变表达式的运算顺序。当在表达式中进行运算的数据类型不同时,C+将自动进行隐式转换,当然,用户也可利用强制类型转换的方法进行转换。,数据类型、运算符和表达式,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号