第2章--数据类型和表达式

第2章--数据类型和表达式

ID:82017715

大小:6.13 MB

页数:46页

时间:2022-10-14

上传者:胜利的果实
第2章--数据类型和表达式_第1页
第2章--数据类型和表达式_第2页
第2章--数据类型和表达式_第3页
第2章--数据类型和表达式_第4页
第2章--数据类型和表达式_第5页
第2章--数据类型和表达式_第6页
第2章--数据类型和表达式_第7页
第2章--数据类型和表达式_第8页
第2章--数据类型和表达式_第9页
第2章--数据类型和表达式_第10页
资源描述:

《第2章--数据类型和表达式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1

2学习目标了解C++语言的基本字符、标识符和关键字了解C++语言的编程规范掌握C++语言的基本数据类型、常量和变量掌握C++语言的运算符、表达式及使用方法

32.1关键字和标识符2.1.1关键字关键字也称保留字,是一种有特殊用途的标识符。是由系统预先定义好的字符序列,具有特殊的含义及用法,不能用于变量名或函数名等。C++的常见关键字如表2-1所示。表2-1C++关键字

42.2基本数据类型C++语言的数据类型分为基本数据类型、构造数据类型和引用类型,如图2-1所示。基本数据类型是C++系统内部的数据类型,构造类型和引用类型都是由基本数据类型建立起来的。图2-1C++的数据类型

52.2基本数据类型2.2.1整型数据1.整型的类别在C++语言中,整型数据分为基本整型、短整型、长整型3大类。其中每一类又分为无符号和有符号2种,如表所示。表2-2整型数据的分类

62.2基本数据类型2.整型数据在内存中的存储形式整型数据是以二进制数补码的形式存储的。对有符号数据,则存储单元的最高位为符号位,1表示负数,0表示正数。对无符号数据,则没有符号位,所有的存储单元均为数据位。假设用32个二进制位(bit)存放一个int型数据,则有符号数据和无符号数据在内存中占用存储单元的情况如图2-2所示。图2-2整型数的存储形式

72.2基本数据类型3.求补码的方法在计算机中,整数有原码、反码和补码3种表示方法:(1)一个正数的反码和补码与原码相同(2)负数的原码就是把符号位数值化(3)负数的反码,其原码的符号位不变,其它位按位取反(4)负数的补码是反码末位(最右端位)加1。

82.2基本数据类型2.2.2实型数据1.实型数据的类别实型也称之为浮点型。在C++语言中,实型数据分为单精度(float)、双精度(double)和长双精度(longdouble)3种。实型数均为有符号数据,如表2-3所示。表2-3实型数据的分类

92.2基本数据类型2.2.2实型数据2.实型数据的存储形式实型数据在内存中是以指数形式存放的。系统把一个实型数据分成小数部分和指数部分分别存放。其中,指数部分采用规范化的指数形式。例如,实型数据3.14159=+0.314159X101在内存中的存放形式如图2-5所示。图2-5实型数据的存储形式

102.2基本数据类型2.2.2实型数据1.字符型数据的存储形式在内存中,一个字符型数据占用一个字节(8位),以ASCII码(的二进制)形式存放。2.字符数据与整数通用char型数据的ASCII码的取值范围为-128~127,其最高位是符号位。如果使用ASCII码为0~127之间的字符,因为最高位为0,所以在用整数格式%d输出时,输出一个正整数。如果使用128~255之间的字符,因为最高位为1,所以在用整数格式%d输出时,输出一个负整数。

112.3常量与变量2.2.2实型数据(2)整型常量的表示整型常量可以用十进制数、八进制数、十六进制三种形式书写。•八进制整数八进制数使用0(零)作前缀修饰。八进制所含的数字是0~7。例如:OctaNum2=0571;//正确,在常量前面加上0进行修饰OctaNum4=0591;//错误,含有非八进制数9

122.3常量与变量2.2.2实型数据(2)整型常量的表示整型常量可以用十进制数、八进制数、十六进制三种形式书写。•十六进制整数十六进制使用0x或0X作前缀。十六进制所含的数字是0~9以及字母A~F(或a~f)。例如:HexNum2=0x59af;//正确,在常量前面加上0x进行修饰HexNum4=0x59ak;//错误,含有非十六进制数的字母k•十进制整数十进制常量是不需要在前面添加前缀的。十进制所含的数字是0~9。例如:AlgorismNum1=123;

132.3常量与变量【例2.3】三种进制表示方法的转换。#include"iostream.h"voidmain(){intx=1234,y=01234,z=0x1234;cout<<"十进制:"<142.3常量与变量3.字符常量字符型常量是用一对单引号(即撇号)括起来的单个字符,在内存中占一个字节。例如:'a','b','1','$','A'、'#'//正确的字符常量'AB'、"AB"、"a"//错误的字符常量•一个字符常量的值是该字符对应的ASCII码值。例如,字符常量'a'~'z'对应的ASCII编码值是97~123;字符常量'0'~'9'对应的ASCII编码值是48~57。显然'0'与数字0是不同的。•C++语言中还允许一种特殊形式的字符常量,即以反斜线“\”开头的字符序列,称为转义字符。

152.3常量与变量常用的转义字符见表

162.3常量与变量4.符号常量使用符号常量可以使数据含义清楚,同时也便于该数据的修改。符号常量的定义形式:#define符号常量标识符常量值例如:#defineNULL0//定义符号常量NULL代表0#definePI3.14159//定义符号常量PI代表3.141595.布尔型常量布尔型常量只有2个,即true和false,分别代表“真”和“假”。

172.3常量与变量6.字符串常量字符串常量是用双引号括起来的字符序列。比如:"CHINA","","teacherandstudent","12345.456","a"等都是字符串常量。字符串常量一般用一个字符数组(参见第4章)来存储,每个字符占一个字节,存放其对应的ASCII码。字符串常量在内存中存储时,系统自动加上串尾标志'\0'。每个字符串常量在内存中占用的存储单元数目应为该字符串长度(字符个数)加1。例如,"CHINA"的存储形式如图2-8所示。图2-8字符串"CHINA"存储形式

182.3常量与变量2.3.2变量变量是指在程序运行过程中,其值可以改变的量。使用变量前必须先定义(声明),变量是用来保存常量的。变量有三个要素:名称、类型和值。1.变量的名字变量名字是一个标识符,所以必须符合标识符的命名规则。例如:a,_abc,、AREA、x1、x2//合法的变量名4ac、#g、a+1、fn!a、a$//不合法的变量名

192.3常量与变量2.变量的定义变量在使用之前必须先定义,要声明自己的数据类型、存储类型。变量的定义格式为:数据类型变量名1,变量名2,…,变量n;例如:intiSum,iLength,x,y;//定义4个整型变量iSum,iLength,x,ycharch;//定义1个字符型变量chfloatfSum,fWidth;//定义2个实型(单精度)变量fSum,fWidthdoubleu,v;//定义2个实型(双精度)变量u,v

202.3常量与变量3.变量赋初值当使用变量时,变量必须有值。C++语言允许在定义变量的同时使变量初始化。如:inta=2;//定义a为整型变量,初值为2charb=A;//定义b为字符型变量,初值为‘A’floatx=2.1234F;//定义x为实型变量,初值为2.1234F也可对定义的部分变量进行初始化。如intu,v=100,w;//定义u,v,w为整型变量,v的初值为100

212.3常量与变量4.const型变量变量的值可以随时变化,即按需要给变量重新赋值。但有时为了保护变量的值,不允许对变量作修改,则需要将变量说明成常量,具体方法是在变量定义语句前面(或类型与变量之间)加说明符const。例如:constfloatPI=3.14;intconstMaxCout=100;常变量定义时必须初始化。在使用const型变量时,除了不可以给它赋值外,其他均与使用一般变量一样。

222.4运算符与表达式2.4.1算术运算符和算术表达式C++语言的算术运算符包括基本算术运算符、强制类型转换运算符和自增、自减运算符。1.基本算术运算符基本算术运算符及其功能如表2-6所示。表2-6基本算术运算符

232.4运算符与表达式2.自增、自减运算符自增、自减运算符是单目运算符,即对一个运算对象施加运算,运算结果仍赋予该对象。如表2-7所示。表2-7自增、自减运算符

242.4运算符与表达式3.算术表达式用算术运算符和括号将运算对象(也称操作数)连接起来的式子,称为算术表达式。运算对象可以是常量、变量、函数等。4.运算优先级和结合性在表达式求值时,先按运算符的优先级别高低次序执行,再按运算符的结合方向结合(相同优先级时),例如,先乘除后加减。算术运算符的优先级和结合性如表2-8所示。表2-8算术运算符的优先级和结合性

252.4运算符与表达式2.4.2关系运算符与关系表达式1.关系运算符“关系运算符”实际上就是“比较运算符”。关系运算的结果为逻辑值(true或false)。如表2-910所示,C++语言中提供6种关系运算符:<,<=,>,>=,==,!=。(1)优先级别顺序是:自上而下,优先级由高到低。(2)同级运算符的结合性是“左结合性”,即“自左向右”顺序进行。关系运算的优先级都低于算术类,高于赋值类。例如:a>b+c等效于a>(b+c)a=b+c等效于a=(b+c)(3)关系运算符<=,>=,==,!=在书写时,不要空格将其分开,否则会产生语法错误。

262.4运算符与表达式2.4.2关系运算符与关系表达式1.关系运算符表2-9关系运算符

272.4运算符与表达式2.关系表达式关系表达式是用关系运算符连接两个表达式构成。一般形式为:表达式1关系运算符表达式2该表达式执行时,先计算“表达式1”和“表达式2”的值,然后进行比较,运算结果为true(真)或为false(假),分别用非0(true)或0(false)表示。

282.4运算符与表达式2.4.3逻辑运算符与逻辑表达式1.逻辑运算符逻辑运算可以表示运算对象的逻辑关系。表2-10给出了C++语言中3种逻辑运算符、功能及运算规则。表2-10辑运算符

292.4运算符与表达式2.4.3逻辑运算符与逻辑表达式辑运算符中,“!”优先级最高,而且高于算术运算和关系运算符;其次是“&&”,“||”最低。“&&”和“||”都低于算术运算和关系运算符。表2-11逻辑运算“真值表”

302.4运算符与表达式2.逻辑表达式用逻辑运算符连接起来的式子称为逻辑表达式。一般形式为:!表达式1或:表达式1&&表达式2或:表达式1||表达式2例如:!x,x&&y,x||y

312.4运算符与表达式2.逻辑表达式(1)逻辑量的真假判定──0和非0逻辑运算的结果是逻辑值真或假。对于逻辑表达式而言,参加运算的量可以是任何类型的量,在进行判断时系统视非零值为“真”,零值为“假”;而关系运算或逻辑运算的结果若为“真”其值为1,若为“假”其值为0,结果值是无符号整数,又可参与其后的运算。(2)逻辑运算符两侧的操作数,除可以是0和非0的整数外,也可以是其它任何类型的数据,如实型、字符型等。

322.4运算符与表达式2.4.4位运算符和位运算所谓位(bit)运算,是指对一个数据的某些二进制位进行的运算。每个二进制位只能存放1位二进制数“0”或者“1”。通常把组成一个数据的最右边的二进制位称做第0位,从右到左以此称为第1位,第2位……最左边一位称做最高位。C++语言提供6种位运算符,如表2-12所示。表2-12位运算符及含义

332.4运算符与表达式1.按位与(&)运算符“&”将两个运算量的对应二进制位进行“逻辑与”运算。当且仅当参加运算的两个对象的对应二进制位都为1时,结果的对应二进制位为1,否则为0。2.按位或(|)运算符“|”将两个运算对象按对应二进制位进行“逻辑或”运算。即,当参加运算的两个对象的对应二进制位有一个为“1”时,结果的对应二进制位为“1”。3.按位异或(^)运算符“^”将两个运算对象按对应二进制位进行“逻辑异或”运算,即当参加运算的两个对象的相应二进制位一个为“0”,另一个为“1”时,结果的对应二进制位为1,否则为0。

342.4运算符与表达式4.按位取反(~)运算符“~”为一元运算符,它将运算对象的各位取反,即将1变0,0变1。5.左移运算符(<<)左移运算的一般格式为:运算对象<<左移位数左移运算符将运算对象的每个二进制位同时向左移动指定的位数,从左边移出的高位部分被丢弃,空出的低位部分补0。

352.4运算符与表达式6.右移运算符(>>)右移运算的一般格式为:运算对象>>右移位数右移运算符将运算对象的每个二进制位同时向右移动指定的位数,从右边移出的低位部分被丢弃。对无符号数,左边空出的高位补0;对有符号数,正数的高位部分补0,负数高位部分补0还是1跟计算机系统有关。移入0的称为“逻辑右移”,移入1的称为“算术右移”。

362.4运算符与表达式2.4.5条件运算符条件运算符“?:”是C++语言中唯一的一个具有3个操作数的运算符,其与表达式格连接的式子叫条件表达式。一般格式如下:变量=<表达式1>?<表达式2>:<表达式3>功能:首先计算表达式1的值,如果表达式1的值为非0(真),则整个条件表达式的值取表达式2的值;否则,整个条件表达式的值取表达式3的值。

372.4运算符与表达式2.4.6赋值运算符和赋值表达式1.赋值运算符在C/C++语言中,等号“=”被作为是一种运算符,称为赋值运算符。一般形式:<变量名>=<表达式>;功能:将右边表达式的值赋给左边的变量。例如:a=13;//将右边数据13值赋给左边的变量ax=a+15;//将右边表达式(a+15)的值28赋给左边的变量x

382.4运算符与表达式2.4.6赋值运算符和赋值表达式2.复合赋值运算符在赋值运算符的前面加上一个其它运算符后就构成复合的赋值运算符。一般形式:<变量><双目运算符>=<表达式>;等价于:<变量>=<变量><双目运算符><表达式>;

392.4运算符与表达式3.赋值表达式由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。一般形式:<变量><赋值运算符><表达式>例如,a=12是一个赋值表达式。对赋值表达式求解的过程是:将赋值运算符右侧的“表达式”的值赋给左侧的变量,而赋值表达式的值就是被赋值的变量的值。如a=12这个赋值表达式的值就是变量a的值12。

402.4运算符与表达式2.4.7逗号运算符和逗号表达式逗号运算符“,”作为C++语言的一种特殊的运算符,也称为顺序求值运算符,它的作用是把多个表达式连接起来。例如:3+2,4+6x+3,y+z,s-1等都是在做逗号运算。我们把用逗号运算符连接起来的式子称为逗号表达式,其一般形式为:表达式1,表达式2,...,表达式n

412.4运算符与表达式1.求解过程按照从左到右的顺序逐个求解表达式1,表达式2,...,表达式n,而整个逗号表达式的值是最后一个表达式(表达式n)的值。例如:a=3*5,a*4//是逗号表达式,运算结束后a=14,表达式的值是60x=(a=3,6*3)//是赋值表达式,运算结束后a=3,x=18,表达式的值是18x=a=3,6*3//是逗号表达式,运算结束后a=3,x=18,表达式的值是182.优先级逗号运算符在所有运算符中的优先级别最低,且具有从左至右的结合性。例如:a=3*4,a*5,a+10求解过程为:先计算3*4,将值12赋给a,然后计算a*5的值为60,最后计算a+10的值为22,所以整个逗号表达式的值为22,而a的值为12。

422.4运算符与表达式2.4.8运算符的优先级与结合顺序表2-14运算符的优先级当表达式中包含多个运算符时,哪个运算符先参加运算是由运算符的优先级来决定的,高优先级的先参加运算,低优先级的后参加运算。运算符的优先级详见表2-14。

432.5类型转换2.强制类型转换强制类型转换的一般格式为:(强制转换的类型名)(表达式)功能:把表达式强制转换为指定的类型。例如:(int)(a)或(int)a//将a转换成整型*/(double)(x+y)//将x+y转换成double型

442.6情景应用——训练项目2.6.1项目1:求解方程ax2+bx+c=0(a不为0)【问题描述】求解一元二次方程ax2+bx+c=0,由键盘输入系数,输出方程的根。图2-12求一元二次方程ax2+bx+c=0的根

45

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
最近更新
更多
大家都在看
近期热门
关闭