ImageVerifierCode 换一换
格式:PPT , 页数:76 ,大小:1.68MB ,
资源ID:3573411      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3573411.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++程序设计.ppt)为本站会员(创****公)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

C++程序设计.ppt

1、C+程序设计,第2章 数据类型、运算符和表达式,2.1 基本数据类型2.2 常量 2.3 变量 2.4 基本运算符 2.5 类型转换 2.6 表达式和语句 2.7 本章小结,第2章 数据类型、运算符和表达式,2.1 基本数据类型,为什么要区分数据类型?,C+通过数据类型,告诉计算机数据是如何定义的。 C+数据类型定义了该类型数据所占的内存空间大小、表示范围和支持的运算。,2.1.1 关键字,在C+中,有一些预定义的标识符,称为关键字(keyword),也称为保留字,关键字是C+语言用来构建程序的一些必需元素,每个关键字都具有系统预先定义好的作用,不能把它们再定义为变量的标识符。注意:关键字区分

2、大小写。,2.1.1 关键字,表2-2 C+中的关键字,2.1.2 标识符,标识符(identifier)是一个字符序列,用来标识常量名、变量名、函数名、类名、结构名、联合名、对象名、类型名或者标号名。,标识符只能由字母、数字、或下划线组成;标识符的首字符必须是字母或下划线,不能是数字,例如:2cat 、8key是非法的标识符。在定义标识符时,虽然语法上允许用下划线开头,但是,由于标准库里的标识符一般以下划线开头,所以,最好避免使用下划线作为自定义标识符的首字符;,2.1.2 标识符,标识符区分大小写,如:star、Star、sTar、stAr和STAR是互不相同的标识符;标识符不能和C+关键

3、字或运算符替代名相同,标识符不能与关键字重名,但标识符中可以包含关键字,例如,intx,myclass是合法的标识符;C+标准没有限制标识符的长度,但编译器的实现都会有限制,建议:在定义标识符时,一般不要超过32位。,2.1.2 标识符,表2-4 几个正确和不正确的标识符实例,2.1.3 标点符号,在C+程序中,标点符号对编译器具有语法意义。,表2-5 C+中的标点符号,2.1.4 分隔符,分隔符用来分隔单词或程序正文,表示某个程序实体的结束或者另一个程序实体的开始。分隔符本身并不对程序的语法和语义产生任何影响,是一种不被编译的符号。C+的分隔符可以是一个或多个:空格符、制表符、换行符或者注释

4、符。例如,下列两个程序段等价:charmybook; charmydocument; 与charmybook; charmydocument;,2.1.5 C+的数据类型,C+数据类型如图2-1所示。,图2-1 C+数据类型,2.1.5 C+的数据类型,表2-6 基本数据类型及其表示范围,2.2 常量,在C+程序中,数据以两种形式表示:常量和变量。常量用于表示在程序运行的整个过程中始终保持不变的数据,如:圆周率。变量用于表示在程序执行过程中值可以改变的数据,如:float x = 5.26; 中的x。,常量可以用两种形式表示:字面值常量和符号常量。字面值常量也称直接量(literal),在程序

5、中直接按其书写形式对待,如数字36、字符串“Hello”。符号常量指给常量取一个名字,指定数据类型,并定义为const,因而符号常量也称命名常量,在程序中通过常量名使用符号常量。,2.2.1 整型字面值常量,1.后缀类型标识,整型包括短整型(short)、长整型(long)、有符号型(int)和无符号型(unsignedint),字面值整型常量的类型默认为int或long,其值适合int就是int类型,比int大的就是long类型。C+通过在整数后面添加后缀字符,直接指定字面值整型常量的类型,u或U表示unsigned,l或L表示long,l或L与u或U的组合:ul、lu、uL、Lu、Ul、l

6、U、UL或者LU,表示类型是unsigned long int,类型简写为unsigned long,如:,2.2.1 整型字面值常量,在C+中整型有三种表示形式:10进制、8进制和16进制,以非0开头的数是10进制,以0开头表示8进制,以0x或0X开头表示16进制,例如:,2.前缀类型标识,50000L / 10进制长整数2002u / 无符号10进制整数123ul或123lu / 无符号10进制长整数 0126 / 8进制整数050000L / 8进制长整数0x12A / 16进制整数0x5a000L / 16进制长整数,2.2.2 浮点字面值常量,浮点类型包括float、double和l

7、ongdouble,默认的浮点类型常量为double,如果要表达一个float或long double型常量,可以分别使用后缀 f(或F)或 l(或L),具体地,浮点类型字面值常量,表示方式有定点数表示法和指数表示法。,定点表示法由整数和小数两部分组成,中间用小数点隔开,例如:2.71828f/ float2.36/ double,默认类型3.14159L/ long double,2.2.2 浮点字面值常量,指数表示法,指数表示法(科学记数法)必须有尾数和指数两部分,并且指数只能是整数,指数用e或者E表示,表示“10的X次方”,X是字符e后面跟的整数值,例如:3.6E2 / 3.6 1026

8、.02e23 / 6.02 10231.6e-19 / 1.6 10-19,2.2.3 字符字面值常量,1.字符常量,字符类型常量包括普通字符常量和转义字符常量。,普通字符常量,转义字符常量,可打印字符的字面值常量,可以用一对单引号括起单个字符的方式定义,例如:aA2, ,不可打印的控制字符,如退格、回车和换行等,以及在C+中有特殊意义的字符,如单引号、双引号和反斜线等,表示方法是:以转义符开头,后跟一个特定字母来表示。,2.2.3 字符字面值常量,表2-7 常用的转义字符及其描述,2.2.3 字符字面值常量,2.字符常量的通用ASCII码表示,在转义符后面接8进制或16进制数,表示ASCII

9、码等于该值的字符。,2.2.4 布尔字面值,在C+中,布尔类型(bool)用于描述“真”和“假”,bool类型取值只有两个:true或false,分别对应“真”或“假”,bool字面值通过直接写出bool值表示,直接写:true或者false。,bool类型通常作为条件表达式的计算结果,分别表示条件的满足和不满足,bool值也可以参加算术运算:true对应1、false对应0。同时,其它类型的数据可以转换成bool型:0false非0true,2.2.5 字符串字面值常量,字符串字面值常量简称字符串,是由一对双引号括起来的零个或多个字符,字符串中可以包含空格符、可打印字符和不可打印字符,其中不

10、可打印字符用ASCII码转义序列表示。,Hello World!/ 字符串字面值常量/ 空字符串nCCtoptionstfile.cCn/ 含有换行和Tab的字符串20071022/ 字符串常量,2.2.5 字符串字面值常量,C+中所有的字符串字面值都由编译器自动在末尾加上字符串结束标志0(空字符),而字符型常量不加0,所以字符串字面值的长度是字符串中字符的个数再加上1(0是转义字符,占1位)。例如:Hello / 双引号:字符串常量,长度6A / 双引号:字符串常量,长度2A / 单引号:字符常量,长度1,图2-2 字符串与字符的存储方式,2.2.6 枚举,枚举(enumeration)提供

11、了一种语言级的支持,枚举将变量或者对象可能的值一一列举出来。,1.枚举的定义和初始化,枚举的定义包括关键字enum,其后是一个可选的枚举类型名,以及花括号内用逗号分隔的枚举成员列表:enum;或者不定义枚举类型名,在枚举定义的同时定义枚举变量,格式如下:enum ;,2.2.6 枚举,枚举值对应着一个int型常量,可以在定义时指定初值,如不提供初值,第一个枚举成员默认初始化为,后面每个枚举成员值依次比前面的大1,例如:enumboolfalse, true;/ bool是C+预定义的枚举,false默认初始化为0,true为1enum Forms shape = 1, sphere, cyli

12、nder, polygon; / shape=1、sphere=2 ,/ point2d=2,point2w=3,point3d=3,point3w=4enum Points point2d = 2, point2w, point3d = 3, point3w;,2.2.6 枚举,2.枚举类型的使用,【例 2.1】枚举类型应用示例。#include using namespace std;int main( ) / 定义一个weekDay枚举类型 enum weekDay Mon = 1,Tue,Wed,Thu, Fri, Sat, Sun; weekDay d1, d2, d3; / 定义3

13、个weekDay枚举类型的变量 d1 = Thu; / d1只能赋“Mon、Tue、Wed、Thu、Fri、Sat、Sun”之一 d2 = Sat; d3 = d2; cout d1= d1 d2= d2 d3= d3 =、=和!=。,表2-9 关系运算符,2.4.2关系运算符,3 5 / 3不大于5,结果为false3 != 5 / 3不等于5,结果为true,【例 2.2】测试程序。#include using namespace std;int main( ) cout HelloWorld! endl; bool val1 = true; if (val1=true) cout boo

14、l 类型字面值true endl; int val2 = 10; if (val2 = true) cout int 类型值10 。其中,左移运算符(),如果操作数为负数,操作数右移n位后,左边移出的空位用0还是符号位1补齐,与具体编译器相关,由于不同编译器如何处理符号位不确定,所以,建议位运算符使用unsigned整型操作数。,2.4.4 位运算符,表2-11 位运算符,2.4.4 位运算符,2.4.4 位运算符,位运算符的优先级从高到低依次为:、和和= &= = |= / 位运算复合赋值运算符是一个整体,中间不能用空格隔开,例如:a *= 6/ 相当于a=a*6a %= 6/ 相当于a=a

15、%6,赋值运算符都是双目运算符,运算符的优先级是同级的,C+语言支持将这多个赋值操作写在一个表达式中,赋值运算符的结合性是右结合,表达式的运算顺序是从右至左,如:sum1=sum2=0,相当于sum1=(sum2=0),赋值表达式的值是其左操作数的值,结果的数据类型为左操作数的类型。,2.4.5 赋值运算符,C+语言要求赋值运算符的左操作数必须是非const的左值,例如:int i, j, ival;const int ci = i;/ 定义并初始化ci,初始化不是赋值!1024 = ival; / 错误:字面值是右值i + j = ival; / 错误:算术表达式结果是右值ci = ival

16、; / 错误:ci是const变量int x;x = 3 + 5;/ 正确:x是左值x + 3 = 5;/ 错误:x+3不是左值,2.4.5 赋值运算符,数组名是不可修改的左值,因此,数组不可用作赋值操作的目标;数组下标运算符和解引用运算符都返回左值,因此,下标和解引用运算作用于非const数组时,其结果可作为赋值操作的左操作数:int ia10;ia0 = 0; / 正确:下标运算返回左值*ia = 0; / 正确:解引用运算返回左值,2.4.5 赋值运算符,赋值操作将右操作数的值赋给左操作数,赋值操作中,各对象的数据类型必须是相同类型或者可转换为相同类型:int ival;int *pva

17、l;ival = pval = 0; / 错误:不可将指针类型赋值给int类型string s1, s2; / 正确:字符串字面值转换为string类型赋给s2,再将结果赋给s1s1 = s2 = OK;,2.4.6 sizeof运算符,sizeof运算符用于测试某种数据类型或表达式的结果类型在内存中所占字节数,返回值的类型为size_t,size_t是C+为了可移植性定义的数据类型,一般是unsigned int,或者unsigned long。语法格式为:sizeof(类型声明符/表达式)sizeof运算符有以下三种语法形式:sizeof (type name)sizeof (expr)s

18、izeof expr,2.4.6 sizeof运算符,将sizeof应用在表达式上,可获得该表达式的结果的类型长度,例如:sizeof (int) / 结果为4sizeof (3 + 3.6) / 结果为8int i, *p;sizeof (i); / 计算int型变量的类型长度sizeof *p; / 计算指针的类型长度,2.4.7 逗号运算符,逗号(,)既可以作为标点符号使用,也可以作为运算符用。逗号作为运算符时,功能是从左向右计算表达式的值,运算结果为最右边表达式的值,此时逗号运算符称为顺序求值运算符,例如:inti, j, k; / 作标点符号用funx(x, y, z);/ 作标点符

19、号用x = 3 + 6, x * 3, x + 6;/ 作运算符用,其结果为15/ 输出 15,其中x是9cout (x = 3 + 6, x * 3, x + 6) endl;cout x endl;/ 输出9,x是9,2.4.8 自增和自减运算符,自增(+)和自减(-)运算符有前置和后置两种使用形式,功能是实现加1或减1操作:+的前置形式,如:+i,操作数i先加1,返回加1后的值作为表达式运算结果;-的前置形式,如:-i,操作数i先减1,返回减1后的值作为表达式运算结果;+的后置形式,如:i+,操作数i加1,返回修改前的操作数i的值作为表达式运算结果;-的后置形式,操作数i减1,如:i-,

20、返回修改前的操作数i的值作为表达式运算结果。,2.4.8 自增和自减运算符,【例 2.4】自增(+)和自减(-)运算符的运算示例。#include using namespace std;int main( ) int x(2), y(2), z(3); y = x+-1; / x=3, y=1,后置+,x先赋值给y,x再加1cout x= x t y= y endl;y = +x-1;/ x=4, y=3,前置+,x加1后赋值给y,(此行x初值是上行x的终值x=3)cout x= x t y= y endl;,2.4.8 自增和自减运算符,y = z- + 1;/ z=2, y=4cout

21、z= z t y= y endl;y = -z + 1;/ z=1, y=2,同理,(此行z初值是上行z的终值z=2)cout z= z t y= y j ? i : j;等价于:if ( i j )maxVal = i;elsemaxVal = j;条件运算符的优先级较低,但高于赋值运算符:e = a ? b : c = d;等价于:e = ( a ? b : ( c = d ) );,2.4.9 条件运算符,当在语句中嵌入条件运算符时,通常需要用圆括号把条件运算符括起来,例如,经常使用条件运算符根据条件输出不同的值:cout (i j ? i : j); / 正确:输出i、j中较小者cou

22、t (i j) ? i : j; / 输出1或0/ 语法错,cout和int不可比较,等价于:(cout i) j ? i : j; cout i j ? i : j;cout(ij); /输出1或0/测试cout的返回结果,根据结果计算表达式i或者表达式jcout ? i : j;,2.5 类型转换,C+允许数据值从一种类型转换成另一种类型。数据类型转换有两种方式:一种是隐式转换(也称自动转换),另一种是显式转换(也称强制类型转换)。,1.隐式类型转换,隐式类型转换是由系统自动进行的,它是在运算时对转换对象的运算值进行转换,而不改变该对象在存贮单元中的内容和类型。隐式类型转换遵循以下规则:若

23、参与运算量的类型不同,则先转换成同一类型,然后再进行运算。转换按数据长度增加的方向进行,以保证精度不降低。即按照“向高看齐”的原则,对“较低”的类型进行提升。,2.5 类型转换,横向向左的箭头表示运算时必定的转换;纵向向上的箭头表示当运算对象为不同类型时转换的方向。注意:箭头的方向只表示数据类型级别的高低,由低向高转换。,2.5 类型转换,例如: inti = 6;charch = b; floatf = 8.36f;doubledf = 9.63; 表达式ch * i + f * 2- df 的计算过程为: 将ch转换为int型,计算ch * i = 98 * 6 = 588;将f转换为do

24、uble型,计算f * 2 = 8.36 * 2 = 16.72;将ch * i转换为double型,计算588 + 16.72 = 604.72;计算604.72 df = 604.72 - 9.63 = 595.09。,2.5 类型转换,inti;floatf = 3.32f; / 先计算f * 2 = 3.32 * 2 = 6.64,然后取整数部分6赋给左值i,i 6i = f * 2,在赋值表达式中,当左值表达式的类型与右值表达式的类型不同时,先计算出右值表达式的值,然后将其转换为左值的类型后赋给左值。例如:,2.5 类型转换,2.强制类型转换,显式类型转换又叫强制类型转换。C+提供了

25、一种强制类型转换运算符,可将一种类型的数据强制转换为另一种类型的数据。强制类型转换的格式为:() 或 ()先求表达式值,然后将该值转换为由类型名所指定的数据类型。,2.5 类型转换,例如:int a;float x, y;(double) a/ 将整型变量a的值强制转换成双精度型int (x + y)/ 将实型变量x、y的和强制转换成整型/ 将实型变量x、y的值转换成整型后作求余(%)运算(int) x % (int) y再看以下两例:/ 将整数5强制转换为float型,然后再除以3,结果为1.66667 (float) 5 / 3 / 先计算5 / 3 = 1,然后将1强制转换为float型

26、,再除以2,结果为0.5float (5 / 3) / 2强制类型转换运算符的优先级高于算术运算符。,2.5 类型转换,说明:强制类型转换是一种不安全的转换。当高类型的数据转换为低类型的数据时,数据精度会受到损失。例如: floatsum = 8.96f; intnum; num = (int) sum; / num的值为8,精度受到损失,2.5 类型转换,强制类型转换也是在运算时对转换对象的运算值进行转换,而该对象在存贮单元中的内容和类型并没有改变,即强制类型转换是一种暂时的行为。例如: doublewidth = 2.36, height = 5.5; intarea1; doublear

27、ea2;area1= int (width) * int (heigth); /area1的值为10 area2 = width * height;/area2的值为12.98,2.6 表达式和语句,1.表达式,表达式由一个或多个操作数通过运算符组合而成,其目的是计算并求得一个结果值,操作数可以是常量、变量、函数,也就是说:变量、常量、函数和各种运算符组合构成表达式,例如,计算圆的面积:area = pi * r * r;,2.6 表达式和语句,2.语句,表达式加上分号“;”构成语句,语句是C+程序的基本单元。表达式加上分号“;”都构成语句,有时候,连续的多条语句属于同一控制范围,这时,可用一

28、对花括号将这些语句括起来: int a = 100; int b = a * 20; 用一对花括号括起来的所有语句,称为一条复合语句,一条复合语句在语法功能上相当于一条语句。,2.6 表达式和语句,3.表达式中不含运算符,如果表达式中不包含运算符,则表达式的结果就是操作数本身的值(例如单个常量或变量构成的表达式): 6/ 表达式的值为6当一个表达式用在需要使用其值的地方,则计算该表达式的值,例如:假设eval是一个表达式:if (eval)/ 计算表达式eval,并将其结果作为条件/ ,2.6 表达式和语句,4.表达式中含有运算符,对于含有运算符的表达式,其值是操作数运算的结果。,5.复合表达式求值,含有两个或更多运算符的表达式称为复合表达式,要计算复合表达式,需要考虑各个计算部分的运算优先级,其中最基本的是“括号优先,先乘除后加减”。,2.6 表达式和语句,表2-13 运算符优先级,

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。