《C++程序设计 大学基础教程第二章.ppt》由会员分享,可在线阅读,更多相关《C++程序设计 大学基础教程第二章.ppt(89页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C+C+大学基础教程大学基础教程第第2 2章章 基本数据类型与表达式基本数据类型与表达式 北京科技大学北京科技大学信息基础科学系信息基础科学系1程序中最基本的元素是数据类型,根据数据类型可以为变量或常量分配内存空间,将变量、常量和运算符结合在一起组成表达式,进行复杂的运算和处理。2第第2 2章章 基本数据类型与表达式基本数据类型与表达式2.1 2.1 词法记号和标识符词法记号和标识符2.2 2.2 基本数据类型基本数据类型2.3 2.3 变量和常量变量和常量2.4 2.4 运算符和表达式运算符和表达式2.5 2.5 基本输入输出基本输入输出32.1 2.1 词法记号和标识符词法记号和标识符 4
2、2.1 2.1 词法记号和标识符词法记号和标识符1、C+字符集字符集英文字母英文字母:AZ,az数字字符数字字符:09特殊字符特殊字符:+-*/%=!#&|_“;.,()空格空格52.1 2.1 词法记号和标识符词法记号和标识符2 2、关键字、关键字n 预先定义好的标识符,预先定义好的标识符,C+C+编译器对编译器对 其进其进行特殊处理。行特殊处理。n 使用使用VC+6.0VC+6.0的编辑环境时,缺省是的编辑环境时,缺省是蓝色蓝色的字符即为关键字。的字符即为关键字。62.1 2.1 词法记号和标识符词法记号和标识符3 3、标识符、标识符 标标识识符符是是程程序序员员声声明明的的单单词词,它它
3、命命名名程程序序正正文文中中的的一一些些实实体体,如如函函数数名名、变变量量名名、类类名名、对对象象名名等。等。C+C+标识符的构成规则如下:标识符的构成规则如下:1 1、不能是、不能是C+C+的关键字;的关键字;2 2、第一个字符必须是大写、小写字母或下划线;、第一个字符必须是大写、小写字母或下划线;3 3、其其他他字字符符可可以以由由大大、小小写写字字母母、下下划划线线或或数数字字组组成成,不能包含空格和不能包含空格和“+“+、-、;、;”等特殊字符;等特殊字符;4 4、为方便输入,长度一般不超过、为方便输入,长度一般不超过3131个字符。个字符。72.1 2.1 词法记号和标识符词法记号
4、和标识符 例如:例如:合法的标识符:合法的标识符:apple、_Student、_123、No1、max_num 不合法的标识符:不合法的标识符:51job、maxnum、-abc 注意:注意:C+C+的标识符是大小写敏感的,即的标识符是大小写敏感的,即abcABCabcABC。82.1 2.1 词法记号和标识符词法记号和标识符4 4、分隔符、分隔符 分分隔隔符符用用于于分分隔隔程程序序中中的的正正文文,在在C+C+中中使用下列字符作为分隔符:使用下列字符作为分隔符:(),:;这这些些分分隔隔符符不不表表示示实实际际的的操操作作,仅仅用用于于构构造造程程序序。比比如如“;”,用用来来作作为为一
5、一句句完完整整语语句句的结束。的结束。92.1 2.1 词法记号和标识符词法记号和标识符5 5、空白、空白 在在C+C+语语句句中中经经常常出出现现空空白白(制制表表符符、空空格、空行)等,通常都忽略不计。格、空行)等,通常都忽略不计。如:如:x=a+bx=a+b 或写成:或写成:x=a x=a +b;+b;102.2 2.2 基本数据类型基本数据类型 112.22.2、基本数据类型、基本数据类型 什么是数据类型?什么是数据类型?数据是程序处理的对象,数据根据其本身数据是程序处理的对象,数据根据其本身的特点进行分类,从而形成不同的数据类型。的特点进行分类,从而形成不同的数据类型。例如:数学中有
6、自然数、整数、实数例如:数学中有自然数、整数、实数122.22.2、基本数据类型、基本数据类型C+C+将数据类型分成两类:基本数据类型将数据类型分成两类:基本数据类型 自定义数据类型自定义数据类型基本数据类型基本数据类型 整型:整型:int字符型:字符型:char、wchar_t(双字符型)(双字符型)实型:实型:float、double逻辑型:逻辑型:bool132.22.2、基本数据类型、基本数据类型自定义数据类型自定义数据类型 数组:数组:type指针:指针:type*引用:引用:type&空类型:空类型:void结构:结构:struct联合:联合:union枚举:枚举:enum类:类:
7、class14数据类型数据类型长度(字节)长度(字节)取值范围取值范围charchar1 1-128-128127127unsigned charunsigned char1 10 0 255255short short intint2 2-32768-327683276732767unsigned Short unsigned Short intint2 20 06553565535intint4 4-2-231312 231-131-1unsigned unsigned intint4 40 02 23232-1-1longlong4 4-2-231312 231-131-1unsigne
8、d longunsigned long4 40 02 23232-1-1floatfloat4 4-3.4*10-3.4*1038383.4*103.4*103838doubledouble8 8-1.7*10-1.7*103083081.7*101.7*10308308long doublelong double8 8-1.7*10-1.7*103083081.7*101.7*10308308boolbool1 10 0或或1 1152.22.2、基本数据类型、基本数据类型修饰符修饰符在在C+中为了更加准确的描述数据类型,提中为了更加准确的描述数据类型,提供了供了4个关键字用来修饰基本的数据
9、类型:个关键字用来修饰基本的数据类型:1、长型、长型long2、短型短型short3、有符号有符号signed4、无符号无符号unsigned161、short:仅仅用用来来修修饰饰int,称称为为短短整整型型,占占2字字节节内内存存,也也可可直接简写为直接简写为short;2、long:仅仅修修饰饰int和和double,因因为为在在不不同同的的编编译译环环境境中中使使用用long修修饰饰的的数数据据所所占占内内存存不不同同,这这里里列列出出的的是是在在VC+6.0的环境下的。的环境下的。3、unsigned:用用来来修修饰饰char、short和和int,表表示示该该数数据据类类型型为为无
10、无符号数。符号数。4、signed:用用来来修修饰饰char、short和和int,表表示示该该数数据据类类型型为为有有符号数,为缺省设置。符号数,为缺省设置。172.22.2、基本数据类型、基本数据类型数据类型和内存空间数据类型和内存空间 不同的数据类型,加上不同的修饰符就具不同的数据类型,加上不同的修饰符就具有了不同的特点,在内存中占用的空间也不同,有了不同的特点,在内存中占用的空间也不同,因而其所能表示的数值范围也不尽相同。因而其所能表示的数值范围也不尽相同。内存单元的单位是字节,因此用来表示数内存单元的单位是字节,因此用来表示数据类型的长度的单位也是字节。据类型的长度的单位也是字节。1
11、82.22.2、基本数据类型、基本数据类型注意注意 整型整型int的长度等于机器的字长:的长度等于机器的字长:16位机:位机:int=2字节;字节;32位机:位机:int=4字节。字节。但但是是short和和long表表示示的的数数据据长长度度是是固固定定的的,任任何何支支持持标标准准C+的的编编译译器器都都是是如如此此,因因而而如如果果需需要要编编写写可可移移植植性性好好的的程程序序,应应将将整整型型声声明明为为short或或long。192.22.2、基本数据类型、基本数据类型例题例题 编写一个程序,输出基本数据类型编写一个程序,输出基本数据类型char,int,float,double,
12、bool的长度。的长度。提示:提示:使用使用sizeof(数据类型数据类型)能够获取不同数据能够获取不同数据类型的长度。类型的长度。20/输出基本数据类型的长度输出基本数据类型的长度#includeusingnamespacestd;voidmain()cout“char:”sizeof(char)“字节字节n;coutint:sizeof(int)字节字节n;coutfloat:sizeof(float)字节字节n;coutdouble:sizeof(double)字节字节n;coutbool:sizeof(bool)字节字节n;212.3 2.3 变量和常量变量和常量222.3 2.3 变
13、量和常量变量和常量概述概述 程序所处理的数据不仅分为不同的数据类型,程序所处理的数据不仅分为不同的数据类型,而且每种类型的数据还分为变量和常量。程序在而且每种类型的数据还分为变量和常量。程序在运行中就是通过这些变量和常量来操作数据的。运行中就是通过这些变量和常量来操作数据的。什么是变量?什么是变量?在在C+C+中,变量是存储信息的地方。变量的中,变量是存储信息的地方。变量的实质是内存中的一个地址空间,在这个地址空间实质是内存中的一个地址空间,在这个地址空间中可以进行数据的存储和读取。中可以进行数据的存储和读取。232.3 2.3 变量变量变量定义的格式:变量定义的格式:数据类型数据类型 变量名
14、变量名1 1,变量名,变量名2 2,变量名变量名n n;例如:定义各种类型的变量例如:定义各种类型的变量 intnum;floatf;charch;shorts;doublearea,length;242.3 2.3 变量变量说明说明 在在创创建建或或定定义义变变量量时时,需需要要指指明明该该变变量量的的数据类型数据类型和和名称名称。数数据据类类型型:决决定定变变量量的的存存储储方方式式和和可可以以进进行的操作;行的操作;变量名称:用来区分不同的变量。变量名称:用来区分不同的变量。变量一旦被定义,则系统自动为其分配应变量一旦被定义,则系统自动为其分配应占的内存。占的内存。252.3 2.3 变
15、量变量 变变量量名名称称的的定定义义遵遵循循标标识识符符定定义义的的规规则则,实实际际上上变变量量名名称称就就是是其其中中一一种种标标识识符符。常常用用的的命命名名约约定有三种:定有三种:1、Unix环境常用的命名法环境常用的命名法my_age、num_of_student2、驼峰式命名法、驼峰式命名法myAge、numOfStudent3、匈牙利标记法、匈牙利标记法iMyCar、ipMyCar262.3 2.3 变量变量赋值赋值 使使用用赋赋值值运运算算符符“=”“=”可可以以将将一一个个值值赋赋给给变变量。量。例如:例如:unsignedshortage;age=18;或者或者 unsig
16、nedshortage=18;或或unsignedshortage(18);272.3 2.3 变量变量 我我们们可可以以一一次次定定义义多多个个相相同同数数据据类类型型的的变变量,也可以一次为多个变量初始化:量,也可以一次为多个变量初始化:charch1=a,ch2=b;intheight=10,width=6,area;特性:特性:变量可以被多次赋值,但每次赋值后,变量可以被多次赋值,但每次赋值后,原值都会被新值覆盖。原值都会被新值覆盖。28例例2.22.2:赋值运算符的使用:赋值运算符的使用#includeusingnamespacestd;voidmain()intmyAge=18;c
17、out“myAge=”myAgeendl;myAge=20;cout“myAge=”myAgeendl;运行结果:运行结果:myAge=18myAge=20292.3 2.3 常量常量 严格来说,常量又分成符号常量和常数。严格来说,常量又分成符号常量和常数。符号常量符号常量:代表一个固定不变值的名字;代表一个固定不变值的名字;常数常数:程序中使用的具体的数据。程序中使用的具体的数据。312.3 2.3 常量常量符号常量符号常量 C+C+中提供了一个关键字中提供了一个关键字const,用来区分用来区分常量和变量。并且由于常量代表一个固定的值,常量和变量。并且由于常量代表一个固定的值,并且该值在程
18、序运行过程中不能够被改变,所并且该值在程序运行过程中不能够被改变,所以要求以要求常量在定义的时候必须进行初始化常量在定义的时候必须进行初始化。例如:例如:constinti=10;关键字关键字 数据类型数据类型 常量名常量名=初始值;初始值;322.3 2.3 常量常量define关键字关键字 在在C C语言中使用预编译指令语言中使用预编译指令#definedefine也能够也能够定义常量。定义常量。例如:例如:#definePI3.1415927 关键字关键字 常量名常量名 值值 该该语语句句属属于于预预编编译译指指令令,不不属属于于C+C+语语句句,因因而而行行尾尾不不需需要要使使用用分分
19、号号。并并且且由由于于C+C+是是向向下下兼兼容容的的,因因而而C C语语言言的的程程序序能能够够在在C+C+的的编编译译器器下下顺顺利利运运行行。但但是是在在C+C+编编程中,建议使用程中,建议使用constconst替代替代#definedefine定义常量。定义常量。332.3 2.3 常量常量整型常数整型常数 十进制数:十进制数:100100 8 8进制数:进制数:01440144 16 16进制数:进制数:0 0 x64x64用用 U U或或 u u表示无符号表示无符号整型整型,如,如6553565535U U 。用用 L L或或 l l表示长表示长整型。整型。默认的是默认的是int
20、int型。型。352.3 2.3 常量常量实型常数实型常数 1 1 小数形式小数形式 例如:例如:0.123、23.12 2 2 指数形式指数形式 例如:例如:123e5或或123E5=123*105 注意:注意:e e前面必须有数字,前面必须有数字,e e后面必须是整数后面必须是整数实常数默认为实常数默认为double型型可用后缀可用后缀 F(f)表示实数常数为表示实数常数为float型。型。362.3 2.3 常量常量字符常数字符常数 1 1、用单引号括起来的一个可显示字符,、用单引号括起来的一个可显示字符,例如:例如:a、?。2 2、转义字符转义字符 以以 开头的字符序列,代表特殊的意义
21、。开头的字符序列,代表特殊的意义。例如:例如:n、t、”3738a0 x07bell(响铃)响铃)n0 x0A换行换行r0 x0D回车回车t0 x09制表符制表符v0 x0B垂直跳格垂直跳格b0 x08Backspace0 x5C0 x22双引号双引号0 x27单引号单引号ddd1-3位位8进数进数xhh1-2位位16进数进数39例例2.32.3:打印特殊字符#includeusingnamespacestd;voidmain()cout“输输出出字字母母:”aaendl;cout“输出字母:输出字母:”nn;运行结果:运行结果:输输出出字字母母:a a (蜂蜂鸣鸣器器响响一一声声)输出字母:
22、输出字母:n (n (换行换行)402.3 2.3 常量常量 反反斜斜杠杠还还可可以以和和八八进进制制数数或或十十六六进进制制结结合合起起来表示相应的来表示相应的ASCIIASCII码。表示形式如下:码。表示形式如下:ddd:13位八进制数位八进制数xhh:12位十六进制数位十六进制数 我我们们知知道道在在十十六六进进制制的的ASCII码码表表中中,字字母母az的的ASCII值值是是61H7AH,因因此此我我们们也也可可以以使使用用如如下下两两句句代代码码替替代代例例2.3中中的的输输出出,达达到同样的结果。到同样的结果。cout“输出字母:输出字母:”x61x07endl;cout“输出字母
23、:输出字母:”x6Ex0A;412.3 2.3 常量常量字符变量字符变量 charch1=a,ch2=97,ch3=064 原因:原因:在内存中,字符数据以在内存中,字符数据以ASCII码存储,即码存储,即以整数表示,所以,以整数表示,所以,C+中字符数据和整数可中字符数据和整数可以相互赋值。以相互赋值。42例2.4:字符数据和整型数据的转换#includeusingnamespacestd;voidmain()intn=a;charch=97;cout”输出内容:输出内容:”nendl;cout”输出内容:输出内容:”chendl;运行结果:运行结果:输出内容:输出内容:9797 输出内容:
24、输出内容:a a注意:变量在输出时,根据其本身的数据类型进行输出。注意:变量在输出时,根据其本身的数据类型进行输出。432.3 2.3 常量常量字符串常量字符串常量 由一对双引号括起来的字符序列,由一对双引号括起来的字符序列,例如:例如:“howdoyoudo?”“helloworld!”442.3 2.3 常量常量逻辑常数逻辑常数 逻逻辑辑型型常常数数只只有有两两个个:false(假假)和和true(真真)。在显示器上显示为。在显示器上显示为0 0和和1 1。472.4 2.4 运算符和表达式运算符和表达式482.4 2.4 运算符和表达式运算符和表达式1 1、表达式、表达式2 2、语句和块
25、、语句和块3 3、运算符、运算符 赋值运算符、算术运算符、关系运算符、赋值运算符、算术运算符、关系运算符、逻辑运算符、逻辑运算符、位运算符、条件运算符、逗号运、条件运算符、逗号运算符算符492.4 2.4 运算符和表达式运算符和表达式表达式表达式 变变量量、常常量量是是存存放放数数据据的的地地方方,那那么么在在C+C+语言中这些数据是如何处理和计算的呢?语言中这些数据是如何处理和计算的呢?在在C+C+语语言言中中将将变变量量、常常量量和和运运算算符符有有机机结结合合在在一一起起组组成成的的就就是是表表达达式式,利利用用表表达达式式C+C+可以进行复杂的运算和处理。可以进行复杂的运算和处理。50
26、例如:例如:3.2/简单表达式,值为简单表达式,值为3.22+3/常量表达式,值为常量表达式,值为5a/简单表达式,值为变量简单表达式,值为变量a的值的值x=(a+b)*c;/较为复杂的表达式较为复杂的表达式 表表达达式式是是可可以以嵌嵌套套的的,比比如如y=x=a+b,该该表表达达式式先先将将a和和b进进行行相相加加,然然后后将将结结果果赋赋值值给给x,再将再将x=a+b的值赋给的值赋给y。2.4 2.4 运算符和表达式运算符和表达式512.4 2.4 运算符和表达式运算符和表达式表达式表达式 定义:定义:表达式是表达式是操作符操作符、操作数操作数和和标点符号标点符号组成组成的序列。的序列。
27、操作符:操作符:+-*/等等 操作数:变量、常量、数组等操作数:变量、常量、数组等 标点符号:空格、回车等标点符号:空格、回车等522.4 2.4 运算符和表达式运算符和表达式语句和块语句和块 C+C+中中所所有有的的操操作作运运算算都都通通过过表表达达式式来来实实现现。由由表表达达式式和和结结尾尾的的“;”“;”组组成成一一个个C+C+语语句句;多多条条C+C+语语句句通通过大括号过大括号括起来,组成一个块语句,例如:括起来,组成一个块语句,例如:inttemp=x;x=y;y=temp;一一般般来来说说属属于于同同一一个个逻逻辑辑关关系系的的多多条条语语句句组组成成块块语句。语句。532.
28、4 2.4 运算符和表达式运算符和表达式运算符运算符 运算符具有运算符具有优先级优先级和和结合性结合性。优先级:优先级:级别高的先运算,级别低的后运算。例如:级别高的先运算,级别低的后运算。例如:*/高于高于+-+-结合性:结合性:自左向右结合还是自右向左结合。例如:自左向右结合还是自右向左结合。例如:1+2+31+2+3,+自左向右结合。自左向右结合。54552.4 2.4 运算符和表达式运算符和表达式运算符运算符根据运算符对操作数的要求不同,分成:根据运算符对操作数的要求不同,分成:一元运算符:一元运算符:仅需要一个操作数的运算符,例如仅需要一个操作数的运算符,例如+等等 二元运算符:二元
29、运算符:需需要要两两个个操操作作数数的的运运算算符符,例例如如:+、-、*、/等等,形如形如“操作数操作数1 1 运算符运算符 操作数操作数2”2”三元运算符:三元运算符:需要三个操作数的运算符,只有条件运算符需要三个操作数的运算符,只有条件运算符“?:”。562.4 2.4 运算符和表达式运算符和表达式学习运算符需要特别关注的问题学习运算符需要特别关注的问题该运算符的优先级该运算符的优先级该运算符的结合性该运算符的结合性该运算符的表达式的取值该运算符的表达式的取值该运算符的特别事项该运算符的特别事项572.4 2.4 运算符和表达式运算符和表达式赋值运算符赋值运算符 1 1、赋值运算符就是、
30、赋值运算符就是“=”例如:例如:float f=3.15float f=3.15 2 2、左值左值:可以合法的放在:可以合法的放在“=”“=”左边的操作数左边的操作数 右值右值:可以合法的放在:可以合法的放在“=”“=”右边的操作数右边的操作数 常常量量都都是是右右值值,所所以以不不能能够够放放在在“=”“=”的的左边被赋值;左边被赋值;变变量量既既是是左左值值又又是是右右值值,可可以以放放在在任任何何位位置。置。582.4 2.4 运算符和表达式运算符和表达式算术运算符算术运算符C+提提供供的的算算术术运运算算符符包包括括“+,-,*,/,%,+,-”1、二元运算符:、二元运算符:+(加加)
31、,-(减减),*,/,%2、一元运算符:一元运算符:+(正号正号),-(负号负号),+,-592.4 2.4 运算符和表达式运算符和表达式算术运算符算术运算符 注意:注意:1 1、“/”根根据据操操作作数数不不同同,运运算算规规律律也也不不同同:整型数为整除运算:例如整型数为整除运算:例如5/2=2;浮点数为通常意义的除法:即浮点数为通常意义的除法:即5.0/2.0=2.5。2 2、“%”取取余余数数运运算算符符,只只能能对对整整型型数数进进行行操作,不允许对浮点数进行操作。操作,不允许对浮点数进行操作。602.4 2.4 运算符和表达式运算符和表达式算术运算符算术运算符 C+中提供了两个特殊
32、的运算符:中提供了两个特殊的运算符:+,-表示将表示将操作数减操作数减1。+、-运运算算符符根根据据操操作作数数的的位位置置不不同同,又又称称为为前前置(置(+i)和后置和后置(i+)1、前置(、前置(+i):):先先自自身身加加1,然然后后再再将将加加1的的值值作作为为(+i)表表达达式式的值;的值;2、后置(、后置(i+):):将将i作为作为(i+)表达式的值,然后自身再加表达式的值,然后自身再加1。61例例2.62.6:自增运算符的使用#includeusingnamespacestd;voidmain()inti=1;cout”i=”iendl;cout”i+:”i+endl;cout
33、”i=”iendl;cout”+i:”+iendl;cout”i=”iendl;11233622.4 2.4 运算符和表达式运算符和表达式算术运算符算术运算符 在在C+中中可可以以将将算算术术运运算算符符和和赋赋值值运运算算符符结结合合在在一一起起进进行行运运算算,因因此此C+还还提提供供5种种复复合合的的赋赋值值运运算算符符+=,-=,*=,/=和和%=。例如:例如:x+=y 相当于相当于x=x+yx-=y相当于相当于x=x-yx*=y相当于相当于x=x*yx/=y相当于相当于x=x/yx%=y相当于相当于x=x%y63例如:#includeusingnamespacestdvoidmain
34、()intx=2,y=3;x*=y+8;coutxendl;原因:原因:x*=y+8 x*=y+8 等价于等价于 x=x*(y+8)x=x*(y+8)/显示22642.4 2.4 运算符和表达式运算符和表达式算术运算符算术运算符 这些运算符的优先级由高到低依次为:这些运算符的优先级由高到低依次为:1、+(正号正号),-(负号负号),+,-2、*,/,%3、+、-4、=、+=、-=、*=、/=、%=652.4 2.4 运算符和表达式运算符和表达式注意注意 在在进进行行算算术术运运算算时时,很很可可能能出出现现溢溢出出,溢溢出出是是指指在在给给一一个个变变量量赋赋值值时时超超出出了了其其数数据据类
35、类型型表表示示的的范范围围。溢溢出出不会引起编译错误的,但运行结果会出现偏差。不会引起编译错误的,但运行结果会出现偏差。例如:例如:shortinti=40000;couti=、=、=、=、2、=、!=由由关关系系运运算算符符将将两两个个表表达达式式连连接接起起来来,就就是是关关系系表表达达式式;关关系系表表达达式式的的结结果果类类型型为为bool,值只能为值只能为true或或false,屏幕显示为屏幕显示为1 1或或0 0。67例如例如inta=1,b=2,c=3;couta=bendl;couta!=bendl;cout=bendl;coutabb=ca+5;coutdb&b+)cout”
36、b的值没有被改变。的值没有被改变。”endl;coutbendl;运行结果:运行结果:2 2702.4 2.4 运算符和表达式运算符和表达式条件运算符条件运算符 条件运算符语法格式为:条件运算符语法格式为:表达式表达式1 1?(表达式?(表达式2 2):(表达式):(表达式3 3););运运算算的的结结果果是是:如如果果表表达达式式1 1的的值值为为真真,则则返返回回表表达式达式2 2的值,否则返回表达式的值,否则返回表达式3 3的值。的值。例例1:x=ab?a:b;例例2:intx=0,y=1;couty?x:y)endl;712.4 2.4 运算符和表达式运算符和表达式逗号运算符逗号运算符
37、逗号表达式的语法格式为:逗号表达式的语法格式为:表达式表达式1,表达式,表达式2,表达式,表达式n;C+顺顺序序计计算算表表达达式式1,表表达达式式2,表表达达式式n的的值值,并并将将最最后后一一次次计计算算的的结结果果作作为为逗逗号号表表达达式式的的结结果。果。例如:例如:inta,b,c;a=1,b=2,c=a+b;72例子例子 inta,b,c,d;d=(a=1,b=2,c=a+b,a+b+c);coutdendl;6732.4 2.4 运算符和表达式运算符和表达式数据类型转换数据类型转换 当当表表达达式式中中出出现现多多种种数数据据类类型型的的混混合合运运算算时时,往往往往需需要要进进
38、行行类类型型转转换换。表表达达式式中中的的类类型型转换分成两种:转换分成两种:1 1、隐式类型转换、隐式类型转换 2 2、强制类型转换。、强制类型转换。742.4 2.4 运算符和表达式运算符和表达式1 1、隐式类型转换、隐式类型转换 各各种种二二元元运运算算符符在在进进行行运运算算时时都都要要求求两两个个操操作作数数的的数数据据类类型型一一致致。如如果果类类型型不不一一致致,则则系统自动对数据进行转换(隐式类型转换)。系统自动对数据进行转换(隐式类型转换)。转换的基本原则转换的基本原则:将将精精度度较较低低、范范围围较较小小的的类类型型转转换换成成精精度度较高、范围较大的类型。较高、范围较大
39、的类型。char short int long float double752.4 2.4 运算符和表达式运算符和表达式1 1、隐式类型转换、隐式类型转换 对对于于同同一一种种精精度度的的无无符符号号数数和和有有符符号号数数,在在进进行行算算术术运运算算中中,有有符符号号数数向向着着无无符符号号数数方方向进行隐式类型转换:向进行隐式类型转换:signedunsigned。例如:例如:inta=100;unsignedinti=99;couti-aendl思思考考一一下下,如如果果将将unsigned int i=99;改改为为 unsignedshorti=99;结果如何?结果如何?无符号数:
40、4294967295带符号数:-1762.4 2.4 运算符和表达式运算符和表达式1 1、隐式类型转换、隐式类型转换 逻逻辑辑运运算算符符要要求求参参与与运运算算的的操操作作数数为为bool类类型型,如如果果是是其其他他类类型型,则则系系统统自自动动将将其其转转换换成成bool类类型型,转转换规则:换规则:0为为false,非非0为为true。赋赋值值运运算算符符要要求求“=”“=”左左右右两两边边的的操操作作数数数数据据类类型型相相同同,如如果果类类型型不不一一致致,则则自自动动将将右右边边的的操操作作数数类类型型向着左边的操作数类型转换。向着左边的操作数类型转换。例如:例如:inti=3.
41、15;coutiendl;772.4 2.4 运算符和表达式运算符和表达式2 2、强制类型转换、强制类型转换 强强制制类类型型转转换换是是通通过过类类型型说说明明符符和和括括号号来来实实现现的的显式转换,其语法格式为:显式转换,其语法格式为:(数据类型名)表达式(数据类型名)表达式 或或 数据类型名(表达式)数据类型名(表达式)例如:例如:inti=97;cout(char)iendl;floatf=3.75;cout(int)f”就可以将键盘键入的数据读入到变量中。语法格式为:就可以将键盘键入的数据读入到变量中。语法格式为:cin变量变量1变量变量2变量变量n;例如:例如:inta,b;ch
42、arch;cinabch;812.5 2.5 I/O流控制流控制2 2、标准输出流、标准输出流coutcout cout负负责责将将变变量量或或常常量量中中的的数数据据输输出出到到屏屏幕幕,使使用用插插入入操操作作符符“”就就可可以以将将变变量量或或常常量量的的数据显示在屏幕上。数据显示在屏幕上。例如:例如:cout”Helloworld!n”;cout能能够够自自动动识识别别“”后后面面的的数数据据类类型型并并进进行行显显示示,并并且且可可以以从从左左到到右右一一次次显显示示多多个个变量。变量。82例子例子#includeusingnamespacestd;voidmain()inta,b;
43、charch;coutabch;cout”a=”a”b=”b”ch=”chendl;832.5 2.5 I/O流控制流控制3 3、IO流的格式控制流的格式控制 库文件库文件 iomanip 常用控制符:常用控制符:setfill(c)设置填充字符设置填充字符setw(n)设置域宽为设置域宽为n n 842.5 2.5 I/O流控制流控制设置输出宽度和填充字符设置输出宽度和填充字符setw(n)设置域宽,即设置设置域宽,即设置“”符号后面的数据符号后面的数据占用的屏幕宽度。只对其后输出的第一个字符占用的屏幕宽度。只对其后输出的第一个字符有效有效 setfill(c)设置填充字符,即设置填充字符,
44、即“”符号后面的数据符号后面的数据长度小于域宽时,使用什么字符进行填充。长度小于域宽时,使用什么字符进行填充。85setw(n)和setfill(c)例例1 1:coutsetw(8)asetw(8)bendl;输出结果:输出结果:例例2 2:coutsetfill(*)setw(5)aendl;输出结果:输出结果:_ _ _ _ _ _ _ _ _ _ _ _ _a_ _ _ _ _ _ _b a_ _ _ _ _ _ _b *a a86#include#includeusingnamespacestd;voidmain()coutsetfill(*)setw(2)nsetw(3)nsetw
45、(4)nsetw(5)nsetw(6)nsetw(7)nsetw(8)n;*87总结总结1 1、基本数据类型、基本数据类型:int,char,bool,float,doubleint,char,bool,float,double 在内存中占用的字节数及表示数的范围在内存中占用的字节数及表示数的范围2 2、变量和常量的定义和使用、变量和常量的定义和使用3 3、运算符的优先级、结合性和运算规则?、运算符的优先级、结合性和运算规则?4 4、数据类型如何转换、数据类型如何转换?5 5、标准输入输出流:标准输入输出流:cincin和和coutcout的使用的使用88作业第第2 2章习题:章习题:3 3,4 4,6 6,1515,16(1)(2),1716(1)(2),1789