第二章数据类型与表达式.ppt

上传人:本田雅阁 文档编号:3448054 上传时间:2019-08-26 格式:PPT 页数:64 大小:2.38MB
返回 下载 相关 举报
第二章数据类型与表达式.ppt_第1页
第1页 / 共64页
第二章数据类型与表达式.ppt_第2页
第2页 / 共64页
第二章数据类型与表达式.ppt_第3页
第3页 / 共64页
第二章数据类型与表达式.ppt_第4页
第4页 / 共64页
第二章数据类型与表达式.ppt_第5页
第5页 / 共64页
点击查看更多>>
资源描述

《第二章数据类型与表达式.ppt》由会员分享,可在线阅读,更多相关《第二章数据类型与表达式.ppt(64页珍藏版)》请在三一文库上搜索。

1、第二章 数据类型与表达式,C+开发实例教程刘畅主编 电子工业出版社,本章学习内容,掌握各种基本数据类型的关键字、数据长度和表示范围; 掌握各种类型的数值表示; 弄清变量以及变量赋值的实质、标识符的构成规则; 弄清常量与变量之间的区别; 掌握常用的运算符的含义、优先级和使用方法; 掌握隐式和显式类型转换的概念和使用方式。,本章目录,第二讲 C+的数据类型、常量与变量 第三讲 运算符与表达式 本章小结,结 束,第二讲 C+的数据类型、常量与变量,一、C+的数据类型 二、变量和常量 练一练,返回本章目录,一、C+的数据类型,数据是程序处理的对象,为了描述现实世界中不同特点的事物,C+设计了多种数据类

2、型。C+提供了多种数据类型用于表示和存储数据,以满足程序处理的需要。右图列出了C+的各种数据类型。,返回本讲目录,1字符集,字符集是构成C+程序语句的最小元素。C+程序语句(字符串除外)只能由字符集中的字符构成。字符集中的字符都能由键盘输入,字符集由下列各类字符构成: 数字:0,1,2,3,4,5,6,7,8,9。 英文字母:az,AZ。 特殊字符: 空格 ! # % () 从字符集构成可看出,C+字符集由除符号外的所有能由键盘输入的英文字符构成。这些字符组合起来使用,如作为标识符、数据;有的可单独使用,如+、-、*、/分别表示加、减、乘、除。,返回本讲目录,2.标识符与关键字,标识符是用来标

3、识程序中的一些实体,是这些实体的名字,包括函数名、变量名、类名、对象名等。日常生活中,人名就是一个人的标识符。 标识符的构成应遵循如下规则: (1)由英文大、小写字母、下画线和数字组成。 (2)第一个字符必须为英文大、小写字母或下画线。 (3)英文大写字母与小写字母分别代表不同标识符。 (4)不能是C+关键字。,返回本讲目录,C+的关键字是C+预定义的单词,也叫保留字。只能为C+保留,不能用做标识符。当程序员将关键字作为标识符时,一般编译系统会警告。 在符合构成规则的前提下,如何来设定一个好的标识符呢?一般而言,标识符要有意义、简洁、易区分,以便程序易读,编程时不易犯错误。,返回本讲目录,3.

4、基本数据类型,C+的数据类型大体分为五大类:整型(int)、实型(又称浮点型,float和double)、字符型(char)、布尔型(bool)和空值型(void)。其中,布尔型也称为逻辑型。 表2-1列出了C+的基本数据类型。,返回本讲目录,表2-1 C+的基本数据类型,返回本讲目录,二、变量和常量,【实例2-1】 阅读下面程序,注意观察程序的运行结果。 点击【实例2-1】 源程序 程序分析: 这是一个已知圆的半径r,求圆的周长l与面积s的数学题。程序用double定义了3个双精度浮点型变量r、l、s,令r的初值为1,且根据圆的周长公式(2r)与面积公式( r2)求出l和s的值。 然后用输出

5、流cout分别输出该圆的半径r、周长l和面积s的值。 因为输出时要进行换行,所以在输出流中使用转义字符n进行换行。 程序运行结果如下:,返回本讲目录,4.变量概述,要区分变量名和变量值是两个不同的概念。例如,整型变量a的值为3,则该变量名为a,变量的值为3。,所谓变量,是指在程序运行过程中其值可以改变的量。一个变量应该有名字(即变量名),有值(变量值),并在内存中占据一定的存储单元。,返回本讲目录,5.变量的定义与初始化,变量定义的一般格式为:,数据类型 变量名1,变量名2,变量名n;,在定义一个变量的同时,也可以用赋值运算符给它赋以初值,称为变量初始化。 变量初始化的格式如下:,数据类型 变

6、量名1=初值1 , 变量名2=初值2 , , 变量名n=初值n;,“=”在C+中不是数学中的“等于号”,而是赋值号,它表示把“=”右边的数据存放在左边的变量表示的存储单元中。,返回本讲目录,例如,在【实例2-1】中语句: double r=1,l,s; 表示定义了3个double型的变量,且将变量r赋初值为1。 在定义变量的同时赋初值还有一种方法,就是在变量后面将初值放在括号中,格式如下:,例如,【实例2-1】的第6行赋初值语句也可改为: double r(1),l,s;,数据类型 变量名1(初值1) , 变量名2(初值2) , , 变量名n(初值n);,返回本讲目录,6.常量,常量又称常数,

7、是指在程序运行过程中其值不能改变的量。C+中的常量又分字面常量和符号常量。字面常量又称直接常量,就是常说的常数。 与数据类型相对应,C+中的字面常量主要有整型常量、浮点型常量、字符常量、字符串常量与布尔型常量。,返回本讲目录,1)整型常量 整型常量又称整数,在C+中,整数可以用三种数制来表示,采用十进制、八进制和十六进制的表示形式,其方法是在数字前面加上进制前缀。各种进制的表示形式如下: (1)十进制整数。十进制整常数没有前缀,其数字取值范围为09。例如:123、-38、256等。 (2)八进制整数。八进制整常数必须以数字0开头,即以0作为八进制数的前缀。数字取值范围为07。八进制数通常是无符

8、号数。例如:023、046等。 (3)十六进制整数。十六进制整常数的前缀为0X或0x,其数字取值范围为09、AF或af。例如:0X1C、0XFFFF等。 (4)整型常数的后缀。如果使用的数值超过了基本整型数据的取值范围,就必须用长整型数来表示。长整型数是用后缀“L”或“l”来表示的。例如:158L、077L和0XA5L等。 无符号数也可用后缀表示,整型常数的无符号数的后缀为“U”或“u”。例如:358u,0x38Au,235Lu均为无符号数。,返回本讲目录,2)浮点型常量 浮点型常量也称为实数或者浮点数。在C+中,实数只采用十进制。它有两种形式:十进制小数形式和指数形式。 (1)十进制小数形式

9、。由数字09和小数点(注意:必须有小数点)组成,小数点前后如果有单独的0可以省略。如:123.45、-256.7、0.0、.25、12.都是合法的小数。 (2)指数形式。指数形式又称科学计数法。由十进制小数加上阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。其一般形式为:,a E n,返回本讲目录,其中a为十进制数,n为十进制整数,其值为a10n。 指数形式的表示法有两点要求:e或E前、后必须有数字,e或E后的数字必须是整数。 例如,合法的实数:1.5E3、2.7E-6等。不合法的实数:E-3、2.7E等。,返回本讲目录,3)字符型常量 字符型常量是用英文单引号括起来的一个字符,

10、如:A,a,+等。单引号只是字符与其他符号的分隔符,不是字符常量的一部分,当输出一个字符常量时不输出此单引号。 每个字符变量被分配1个字节的内存空间,因此只能存放一个字符。字符值是以ASCII码的形式存放在变量的内存单元之中的,所以也可以把它们看成整型量。有些ASCII码字符如回车、换行、退格等不能直接在单引号中引用,这些数据可用转义序列来表示。所谓的转义序列是以称为转义符的反斜杠“”开头的字符或数字序列。,返回本讲目录,转义字符有两种表式方法: 其中字符助记符为一个字母,字符的ASCII码值为ooo与xhh,其中ooo表示为3位八进制数,xhh表示为2位十六进制数,字符助记符 或 字符的AS

11、CII码值,返回本讲目录,4)字符串常量 字符串常量简称字符串,是使用一对双引号括起来的字符序列。从该字符串可以看出,转义序列可以用在字符串中。 字符串与字符比较有如下区别: (1)字符由单引号括起来,字符串由双引号括起来。 (2)字符只能是单个字符,字符串可以是零个或多个字符 (3)字符占1个字节的内存空间,字符串占内存字节数等于字符串长度加1。系统自动在字符串末尾添加0作为结束标记,返回本讲目录,例如:字符串 “Hello,boy!”在内存中所占的字节形式如下,该字符串的长度为10,所占的内存空间字节数为11。 5)布尔型常量 布尔型常量只有两个:true与false。它主要用于表达式的计

12、算结果。在C+的算术运算式中,把布尔型数据当做整型数据,true与false分别当做1与0。在逻辑运算中则把非0的数据当做true,把0当成false。,返回本讲目录,7.符号常量,当程序中多次出现同一个常数时就可以把具体的数值符号化。一个符号化的数值称为符号常量,也就是我们常说的有名字的常量。 C+符号常量的定义形式:,#define 符号常量名 数值,点击打开使用符号常量的【实例2-1】源程序x2_1_2.cpp 本程序的运行结果同【实例2-1】。,返回本讲目录,符号常量的特点是: 习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别; 符号常量与变量不同,它的值在其作用域内不

13、能改变,也不能再被赋值。 使用符号常量的好处是:含义清楚,并且能做到“一改全改”。 例如,下面的语句是错误的: #define PI=3.14; /不能使用赋值运算符“=”,且命令结尾不能加分号,返回本讲目录,8.常变量,其中,const可以与数据类型说明位置互换。对比变量的定义格式,发现就是在变量初始定义的基础上加上了const修饰。const的意思是“常,不可改变”的意思。用const修饰后,变量的值就不可改变了,因此这一种形式又称常变量。,const 数据类型 符号常量名=数值;,C+为符号常量还提供了一种新的方法,格式如下:,返回本讲目录,所以【实例2-1】又可改为下面这种形式: 点击

14、查看使用常变量的【实例2-1】源程序x2_1_3.cpp 本程序的运行结果同【实例2-1】。 需要注意的是,下面的这两种形式是错误的: const double PI; /错误,定义时没有给出初值 PI=3.14159; /错误,常量不能被改变,返回本讲目录,同符号常量相比,常变量有如下好处: (1)常变量与变量定义相似,可使程序保持良好风格; (2)常变量可以按不同的需要选择合适的数据类型,节省内存空间,在运算式中有明确的类型。 因此,在C+程序中,一般使用常变量而不使用符号常量。虽然文字常量、符号常量、常变量统称为常量,但前两者与常变量有着本质的差别。文字常量与符号常量代表的数值在程序的指

15、令中不占数据空间,而常变量的值与其他变量一样,保存在专门的内存空间中。,返回本讲目录,练一练,【练习2-1】 设有一个半径值为2的圆,求出该半径所在圆的周长、面积与所在球体的体积,并按照一定格式输出(p值用常变量定义)。 解:(1)程序分析如下: 在这里首先要了解圆的周长、面积与体积的数学公式,以及注意输出的格式,另外涉及到圆周率作为一个常量如何应用。,返回本讲目录, 定义圆的周半径并赋初值,定义圆的周长、面积和体积变量; 将圆周率作为常变量进行定义; 计算并按一定格式显示结果。 点击【练习2-1】源程序 运行结果如下:,返回本讲目录,第三讲 运算符与表达式,一、算术、关系、逻辑及赋值运算符及

16、其表达式 二、其它运算符 三、类型转换 练一练,返回本章目录,一、算术、关系、逻辑及赋值运算符及其表达式,【实例2-2】 阅读程序,分析并写出程序运行结果。 点击打开【实例2-2】 源程序 程序分析: 这个程序主要就是考查算术运算、关系运算、逻辑运算和复合的赋值运算。要弄清这些问题,我们就要搞清楚C+中的各类运算的规则。,返回本讲目录,程序运行结果如下:,1.算术运算符,算术运算符是C+中最常用的一种运算符 ,基本算术运算符如下表所示。说明:表中优先级数字越小,优先级越高,同级的按结合性顺序,多数自左向右运算。正号与负号为一元目运算符,其余均为二元目运算符。,返回本讲目录,(1)算术运算符的意

17、义与数学中相应符号的意义是一致的,它们之间的相对优先级关系与数学中也是一致的。 (2)“%”运算符也被称为取余运算符,要求它的两个操作数的值必须是整数或字符型数。它是前一个操作数被后一个操作数除的余数。当两个操作数都是正数时,结果为正,如果一个(或两个)操作数为负数时,余数的符号取决于机器,因此,移植性无法保证。,返回本讲目录,(3)当“/”运算符用两个整数相除时,如果商含有小数部分,将被截掉。因此,如果要进行通常意义的除运算,则至少应保证除数或被除数中有一个是浮点数或双精度数。 (4)在使用算术运算符时,需要注意有关算术表达式求值溢出的处理问题。在做除法运算时若除数为零或实数的运算结果溢出,

18、系统会认为是一个严重的错误而终止程序的运行并进行提示,而整数运算产生溢出时则不认为是一个错误,但这时运行结果已不正确了,所以对整数溢出的处理是程序设计者要注意的问题。,2.关系运算符,在解决许多问题时都要进行情况判断,C+提供了关系运算符用于比较运算符两边的值。比较后返回的结果为bool值true或false(0或1)。若关系运算符的计算结果继续用在表达式中,true与false分别当成了1与0。关系运算符都是二元目运算符。关系运算符如下表所示。,返回本讲目录,3.逻辑运算符,逻辑运算符实现逻辑运算,用于复杂的逻辑判断,一般以关系运算的结果作为操作数,操作数类型为bool型,返回类型亦为boo

19、l型。在逻辑运算中,非零的数据被当做真(1)。左边的表是逻辑运算符表,右边的是逻辑运算符的功能表,返回本讲目录,逻辑运算符的操作数为bool型数据,当为其他数据类型时,将它转换成bool值参加运算。设a=10,b=5,c=-3,则可得:!a的值为0;a 因为a=4,b=5,c=2,又因为的优先级别高于&,所以表达式ab&ac应先计算ab和ac的值,分别为假(0)和真(1)。然后这两个值再做&运算,0&1的结果为0。,返回本讲目录,4.赋值运算符,赋值运算符的功能是“赋给变量值”,除了在定义变量时给变量赋初值外,通常还用于改变变量的值。各赋值运算符及其功能如表2-7所示。,返回本讲目录,返回本讲

20、目录,表2-7 赋值运算符,C+提供的赋值运算符分为两种:简单的赋值运算符和复合赋值运算符,它们都是双目运算符。 简单的赋值运算符的使用格式如下:,变量名 = 表达式;,其功能是将右边表达式(右操作数)的值放到左边变量的内存单元中。 复合赋值运算符的使用格式如下:,变量名 = 表达式;,运算过程为先将变量名与表达式做规定的运算,然后将运算的结果赋给左边变量名。注意右边的表达式必须先计算出结果,再与变量进行运算。,返回本讲目录,二、其它运算符,【实例2-3】 阅读下面程序,分析并写出其运行结果。 点击打开【实例2-3】 源程序 程序分析: 已知i=3,j=4,则语句:-i; +j;功能是将变量i

21、自减1和j自增1,所以i=i-1=2,j=j+1=5。同理,语句:i-; j+;也是此功能(即+、-符号在单独变量的语句中在变量前后效果一样),所以得i=i-1=1,j=j+1=6。,返回本讲目录,自增(+)、自减(-)符号在表达式中时,要看是在变量前还是变量后,如果自增、减符号在变量后,则先参与表达式计算,然后变量再自增、减。如果自增、减符号在变量前,则先对变量进行自增、减,然后再将变量参与整个表达式运算。所以语句:k=i-j+;相当于k=(i-)-(j+);,因为自增、自减符号都在变量后面,所以,相当于先计算k=i-j;,所以k=1-6=-5。然后再计算i-和j+,所以i=1-1=0,j=

22、6+1=7。 同理,语句:k=-i-+j;相当于k=(-i) - (+j);,因为自增、自减符号都在变量前面,所以,相当于先计算自增、自减,即i=0-1=-1和 j=7+1=8,然后再计算整个表达式k=i-j;,所以k=-1-8=-9。 又已知:m=10,n=20,所以语句:p=(mn)?m+n:m-n;右侧为条件表达式,因为mn(1020)成立,所以用第二个表达式m+n(10+20=30)来作为整个条件表达式的结果,再赋给右边的变量p,所以p的值为30。 因为sizeof运算符可以求某类型数据所占内存字符数,所以sizeof(int)=4,sizeof(m)=4(因为m为整型变量),size

23、of(10)=4(因为10为整数,在内存中也占4个字节),sizeof(double)=8。,返回本讲目录,程序运行结果如下,返回本讲目录,5.+、-运算符,+(自增)、-(自减)运算符是C+中使用方便且效率很高的两个运算符,它们都是单目运算符。这两个运算符有前置和后置两种形式。前置就是指运算符在操作数的前面,后置就是指运算符在操作数的后面。自增、自减运算符如下表所示。,返回本讲目录,无论是前置还是后置,这两个运算符的作用都是使操作数的值增1或减1,但对由操作数和由运算符所组成的表达式则影响却完全不同。 运算规则如下: 若只对某变量自增(自减)而不参与其他赋值运算,结果都是该变量本身自增(自减

24、)1。 若某变量自增(自减)的同时还要参加其他运算,则前缀运算是自变量先自增(减)后再参与表达式运算,后缀运算是自变量先参与表达式运算后再自增(减)。,返回本讲目录,例如,已知此时i=1,j=6,【实例2-3】的第12行代码: k=i-j+; 表达式可写成:k=(i-)-(j+);因为是后置自增自减运算符,特点就是先参与运算,后自增(减),所以相当于计算k=1-6=-5,表达式运算结束。然后变量i再自减1,j再自增1,最后i与j的值为0与7。 同样分析【实例2-3】的第14行代码: k=-i-+j; 与第12行代码所不同的是,这时自增、自减运算符为前置,特点是先自增(减),后参与运算。 由于+

25、、-运算符内含了赋值运算,所以运算对象只能赋值,不能作用于常量和表达式。 例如,下面语句是错误的: 5+; /不合法,+、-不能用于常量 (x+y)- /不合法,+、-不能用于表达式,返回本讲目录,6条件运算符,条件运算符是C+中唯一的一个三目运算符,因此,条件运算符也称三目运算符。它能够实现简单的选择功能,类似于条件语句,故称为条件运算符。条件运算符的优先级为14,结合性按从右向左,格式如下:,表达式1 ? 表达式2 : 表达式3,返回本讲目录,该运算符的功能是先计算表达式1,如果表达式1的值为true(非0),返回表达式2的值作为整个条件运算表达式的值;如果表达式1的值为false(0),

26、返回表达式3的值作为整个条件运算表达式的值。例如,已知:m=10,n=20,【实例2-3】的第17行语句: p=(mn)?m+n:m-n; 先判断表达式1“mn”成立,所以表达式1的值为true,因此返回表达式2“m+n”的值10+20=30作为整个条件运算表达式的值,所以最后p的值为30。,返回本讲目录,7逗号运算符,逗号运算符可作为分隔符使用,将若干变量隔开,如定义多个变量时的定义语句int x,y,z;中各变量之间的分隔符;也可做运算符使用,称做逗号运算符,用于将若干独立的表达式隔开。其语法格式如下:,表达式1, 表达式2 , , 表达式n,使用逗号运算符可以将多个表达式组成为一个表达式

27、,逗号表达式的求解过程为先求表达式1,再求表达式2,依次类推,最后求表达式n的值,并且将表达式n的值作为整个逗号表达式的结果,它的类型也就是最后一个表达式的类型。在C+程序中,逗号运算符常用来将多个赋值表达式连成一个逗号表达式。,返回本讲目录,例如,已知m=10,n=20,【实例2-3】的第19行语句: p=(m+,n+,m+n); 先执行表达式1“m+”,得到m的值为11,再执行表达式2“n+”,得到n值为21,最后执行表达式3“m+n”,得到m+n的值为32,32就是最后运算表达式的返回值,并将32赋值给变量p,故最终p的值为32。 注意,如果在这条语句中把括号去掉,变成如下形式: p=m

28、+,n+,m+n; 最后p的值应为11。原因是逗号运算符的优先级为16,而赋值运算符的优先级为16,故运算顺序产生了变化,先计算表达式p=m+,得到p值为11,然后再计算后两个表达式的值,导致结果的改变。,返回本讲目录,8sizeof运算符,sizeof运算符用来求得某种类型或某个变量所占字节数(长度)。它是一个单目运算符,优先级为2,结合性按从右向左,用在类型说明符或变量名的左边,该运算符的使用格式如下:,sizeof ( 类型说明符 | 变量名 | 常量 ),例如,【实例2-3】的第22行语句: coutsizeof(double)endl; 使用sizeof(m)将获得变量m在机器内存中

29、所占的字节数。所以sizeof(double)则表示double型数据在内存中的长度,双精度的长度为8,所以结果为8。,返回本讲目录,9括号运算符,括号运算符是用来改变原来的优先级的,括号运算符的优先级最高为1,结合性按从左向右。括号运算符可以包含使用(即嵌套),即在括号内还可以使用括号,在出现多重括号时,应该先作最内层的括号,按从里到外的顺序进行。在实际编程中,经常使用括号来改变优先级,即在某些表达式中要求先作优先级低的运算,这时就可以用括号来改变优先级。,返回本讲目录,10位运算符,C+中保留了低级语言中的二进制位运算符,以提高计算的灵活性与效率。位运算分为移位运算与按位逻辑运算。位运算符

30、如下表所示。 位运算符是对其操作数按二进制形式逐步地进行逻辑运算或移位运操作的,运算对象为bool、char、short、int等类型数据,但不能是浮点型数据。,返回本讲目录,【实例2-4】 阅读下面程序,分析并写出程序运行结果。 点击打开【实例2-4】 源程序 程序分析: 本程序有两个初始变量: unsigned char a=137 , b=42; 对a与b进行赋初值,分别为137与42,他们的二进制表示分别为10001001和00101010。 (1)运算符“&”将两个操作数对应位逐一地进行逻辑与运算。例如:a&b,结果为8(二进制结果为00001000)。 (2)运算符“|”将两个操作

31、数对应位逐一地进行逻辑或运算。例如:a|b,结果为171(二进制结果为10101011)。,返回本讲目录,(3)运算符“”将两个操作数对应位逐一地进行逻辑异或运算。逻辑异或运算的规则是“同则0,异则1”,即两个数只要不同,其逻辑异或的结果就为1,相同就为0。例如:ab,结果为163(二进制结果为10100011)。 (4)运算符“”将原来二进制为1的位变为0,原来为0的位变为1。例如:a,结果为118(二进制结果为01110110)。 (5)运算符“”将左操作数向左移动其右操作数所指定的位数,移出的位以0补齐。例如,表达式a1的结果为18(二进制结果为00010010),而表达式a2的结果为3

32、6(二进制结果为00100100)。一般来说,将一个数左移n位,就相当于该数乘以2n(但数据较大时将前面的1位移去后反而会变小,如本例中的a),同样,将一个数右移n位,就相当于该数除以2n。,返回本讲目录,(6)运算符“”将左操作数向右移动其右操作数所指定的位数,移出的位以0补齐。例如,a1,结果为68(二进制结果为01000100),a2,结果为34(二进制结果为00100010)。 (7)因为正常用cout输出一个表达式时,结果为该变量默认类型(本例中为无符号字符型),所以我们要用强制类型转换将该表达式变成无符号短整型时结果才能输出数据的正确结果。 程序运行结果如下:,返回本讲目录,三、类

33、型转换,C+允许在一个表达式中参与运算的操作数的数据类型不一致,也就是说C+支持不同数据类型的数据之间的混合运算。在对这样的表达式求值时,C+需要对其中的一些操作数进行类型转换。表达式中的类型转换有两种方式:自动类型转换与强制类型转换。自动类型转换一般只发生在算术表达式的运算中,因此在C+中大部分的类型转换均为强制类型转换。,返回本讲目录,11自动类型转换,自动类型转换也叫隐式类型转换。一般地,双目运算中的算术运算符、关系运算符、逻辑运算符和位运算符组成的表达式,要求两个操作数的类型一致,如果操作数类型不一致,则转换为高的类型,自动类型转换的顺序可参照下图。,返回本讲目录,关于自动类型转换的几

34、点说明: (1)自动转换发生在不同类型混合运算时,由编译系统自动完成。若参与运算的类型不同,则如图2-3所示,先转换成同一类型,然后进行运算,以保证精度不降低,运算结果是表达式最终类型。 (2)逻辑运算符要求参与的操作数必须是bool型数据,如果有其他类型数据,编译系统会自动将非0数据转换为true,0转换为false。 (3)在赋值运算中,赋值号两边的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。,返回本讲目录,12强制类型转换,自动类型转换是系统自动进行的,不需要用户干预。C+还允许用户根据自己的需要将运算对象的数据类型转换成所需要的数据类型,这就是强制类型转换。强制类型转换的运

35、算格式如下:,类型说明符(表达式),(类型说明符)表达式,或,例如: (int)5.38 /将5.38转换成整型,其值为5 (int)(5.38+4.56)/将表达式5.38+4.56的和9.94转换成int型,值为9 (int)5.38+4.56 /将5.38转换成int型的值5,然后再加上4.56,值为9.56,返回本讲目录,练一练,【练习2-2】 用三目运算符求两个数x,y中的较大数。 解:(1)程序分析如下:在这里首先要比较x与的大小,然后再将较大的值显示出来。 输出提示信息,然后输入两个整数x和y; 比较两个数,若x大则将x赋给max,否则将y赋给max; 将较大值max显示出来。

36、点击打开【练习2-2】 源程序,返回本讲目录,本讲小结,这一讲我们学习了C+的算术运算符、逻辑运算符、赋值运算符、自增自减运算符、条件运算符、逗号运算符、sizeof运算符、括号运算符以及位运算符。各种运算的种类繁多,且具有不同的优先级与结合性。复杂的运算符要多使用括号以方便阅读与理解。在表达式中,参加运算的数据如果类型不同可以自动转换,自动转换的规律是从低类型向高类型转换,以保持数据精度,不丢失数据为原则。C+还提供了多种强制类型转换方法,在特定的场合进行应用。,返回本讲目录,本章小结,数据是程序处理的对象,数据可以依据其本身的特点进行分类。C+中的数据类型又分为基本类型和自定义类型,基本类型是C+编译系统内置的。C+的基本数据类型有bool(布尔型)、char(字符型)、int(整型)、float(浮点型,表示实数)、double(双精度浮点型,简称双精度型)。除了bool型外,数据类型主要有两大类:整数和浮点数。因为char型从本质上说也是整数类型,它是长度为1字节的整数,通常用来存放字符的ASCII码。 本章还介绍了C+中的运算符与表达式。主要的运算符有算术运算符、关系运算符、逻辑运算符、赋值运算符、自增自减运算符、条件运算符、逗号运算符、sizeof运算符、括号运算符、位运算符。在学习运算符的时候,除了注意其功能外,还要注意它们的优先级以及结合性。,返回本章目录,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1