C++高级语言程序设计第二章

PPT
  • 阅读 76 次
  • 下载 0 次
  • 页数 136 页
  • 大小 1.460 MB
  • 2022-11-12 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档40.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
C++高级语言程序设计第二章
可在后台配置第一页与第二页中间广告代码
C++高级语言程序设计第二章
可在后台配置第二页与第三页中间广告代码
C++高级语言程序设计第二章
可在后台配置第三页与第四页中间广告代码
C++高级语言程序设计第二章
C++高级语言程序设计第二章
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 136
  • 收藏
  • 违规举报
  • © 版权认领
下载文档40.00 元 加入VIP免费下载
文本内容

【文档说明】C++高级语言程序设计第二章.ppt,共(136)页,1.460 MB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-2178.html

以下为本文档部分文字说明:

2022/11/121C++高级语言程序设计第2章基本数据类型与表达式北京邮电大学信息与通信工程学院北京邮电大学信息与通信工程学院2022/11/122程序中最基本的要素是数据类型,根据数据类型可以为变量或常量分配内存空间,将变量、常量和运算符结合在一起组成

表达式,进行复杂的运算和处理。北京邮电大学信息与通信工程学院2022/11/12-3-第2章基本数据类型与表达式2.1词法记号和标识符2.2基本数据类型2.3变量和常量2.4运算符和表达式2.5基本输入输

出2.6使用string类型处理字符串北京邮电大学信息与通信工程学院2022/11/12-4-2.1词法记号和标识符北京邮电大学信息与通信工程学院2.1词法记号和标识符C++字符集英文字母:A~Z,a~z数字字

符:0~9特殊字符:+-*/%^=<>!#&|_~\‘“;.,()[]{}空格2022/11/12-5-北京邮电大学信息与通信工程学院2.1词法记号和标识符C++关键字什么是关键字?预先定义好的标识符,C++编译器对其进行特殊处理。如何识别关键字?使用V

C2005的编辑环境时,缺省是蓝色的字符即为关键字。2022/11/12-6-北京邮电大学信息与通信工程学院2.1词法记号和标识符标识符标识符是程序员声明的单词,它命名程序正文中的一些实体,如函数名、变量名、类名、对象名等。C++标识符的构成规则如下:2022/11/12-7-1

、不能是C++的关键字;2、第一个字符必须是大写、小写字母或下划线;3、不包含空格和“+、-、;”等特殊字符;4、为方便输入,长度一般不超过31个字符。北京邮电大学信息与通信工程学院2.1词法记号和标识符例如:合法的标识符:app

le、_Student、_123、No1、max_num不合法的标识符:51job、maxnum、-abc2022/11/12-8-注意:C++的标识符是大小写敏感的,即abc≠ABC。北京邮电大学信息与通信工程学院2.1词法记

号和标识符分隔符分隔符用于分隔程序中的正文,在C++中使用下列字符作为分隔符:(){},:;这些分隔符不表示实际的操作,仅用于构造程序。比如“;”用来作为一句完整语句的结束。2022/11/12-9-北京邮电大学信息与通信工程学院2.1词法记号和标识符空白在C++语

句中经常出现空白(制表符、空格、空行)等,通常都忽略不计。2022/11/12-10-北京邮电大学信息与通信工程学院2.2基本数据类型北京邮电大学信息与通信工程学院2022/11/12-11-2.2基本数据类型什么是数据类型?数据是程序处理的对象,数据根据其本身的特点进行分类,从

而形成不同的数据类型。例如:数学中有自然数、整数、实数不同类型的数据有不同的表示和处理方法,具有不同运算规则2022/11/12-12-北京邮电大学信息与通信工程学院2.2基本数据类型基本数据类型整型:int字符型:char、wchar_t

实型:float、double逻辑型:bool2022/11/12-13-北京邮电大学信息与通信工程学院2.2基本数据类型修饰符在C++中描述为了更加准确的描述数据类型,提供了4个关键字用来修饰基本的数据类型:1、长型long2、短型short3、有符号signed4、无符号u

nsigned2022/11/12-14-北京邮电大学信息与通信工程学院1、short:仅用来修饰int,称为短整型,占2字节内存,也可直接简写为short;2、long:仅修饰int和double,在不同的编译环境中使用long修饰的double类型数据

所占内存不同。3、unsigned:用来修饰char、short和int,表示该数据类型为无符号数。4、signed:用来修饰char、short和int,表示该数据类型为有符号数,为缺省设置。2022/11/12-15-北京邮电大学信息与通信工程学院2.2基

本数据类型数据类型与内存空间不同的数据类型,加上不同的修饰符就具有了不同的特点,在内存中占用的空间也不同,因而其所能表示的数值范围也不尽相同。内存单元的单位是字节,因此用来表示数据类型的长度的单位也是字节。2022/11/12-16-北京邮电大学信息与通信工程学

院2.2基本数据类型数据类型与内存空间特定数据类型在内存中占用的内存因机器的不同而不同整型int的长度等于机器的字长:16位机:int=2字节;32位机:int=4字节。2022/11/12-17-北京邮电大学信息与通信工程学院2.2基本数据类型数据类型与内存空间如果需要编写可移植性好的

程序,应将整型声明为short或long。因为short和long表示的数据长度是固定的,任何支持标准C++的编译器都是如此。-18-2022/11/12北京邮电大学信息与通信工程学院2.2基本数据类型例2-1打印各种数据类

型的长度编写一个程序,输出基本数据类型char,int,float,double,bool的长度。提示:使用sizeof(数据类型)能够获取不同数据类型的长度。-19-2022/11/12北京邮电大学信息与通信工程学院//例2-1显示各种数据类型的长度

#include<iostream>usingnamespacestd;voidmain(){cout<<"char:"<<sizeof(char)<<"字节\n";cout<<"int:"<<sizeof(int)<<"字节\n";cout<

<"float:"<<sizeof(float)<<"字节\n";cout<<"double:"<<sizeof(double)<<"字节\n";cout<<"bool:"<<sizeof(bool)<<"字节\n";}-20-在32位机上运行结果char:1字节int:4

字节float:4字节double:8字节bool:1字节2022/11/12北京邮电大学信息与通信工程学院2.3变量和常量-21-北京邮电大学信息与通信工程学院2022/11/122.3变量和常量概述程序所处理的数据不仅分为不同的数据类型,而且每种类型的数据还分为变量和常量。程序在运行

中就是通过这些变量和常量来操作数据的。2022/11/12-22-北京邮电大学信息与通信工程学院2.3变量什么是变量?在C++中,变量是存储信息的地方。变量的实质是内存中的一个地址空间,在这个地址空间中可以进行数据的存储和读取。2022/11/12-23-北京邮电大学信息与通信工程学院定义变量的格

式数据类型变量名1,变量名2,…变量名n;例如:定义各种类型的变量intnum;floatf;charch;shorts;doublearea,length;2022/11/12-24-2.3变量北京邮电大学

信息与通信工程学院2.3变量定义变量的实质例如:intnum;系统根据所指定的数据类型int,从地址xxxxxxxH开始,为变量num分配4个字节单元。变量num的取值范围为−231~231−1。2022/11/12

-25-北京邮电大学信息与通信工程学院2.3变量定义变量的实质例如:intnum;编程时,可以直接使用变量名num对存储在该内存空间的数据,也就是变量值进行存取。变量名和地址xxxxxxxH之间的对应关系由系统来管理。2022/11/

12-26-北京邮电大学信息与通信工程学院2.3变量几点说明①在创建或定义变量时,需要指明该变量的数据类型和名称。数据类型:决定变量的存储方式和可以进行的操作;变量名称:用来区分不同的变量。2022/11/1

2-27-北京邮电大学信息与通信工程学院2.3变量几点说明②在C++程序中使用变量,必须“先定义或声明,后使用”,而且只能定义一次。③变量定义语句的位置,C++中没有要求,放在第一次使用该变量之前的任何位置均可以。2022/11/12-28-建议:把变量定义语句放在

首次使用它的地方,这样可以提高程序的可读性。北京邮电大学信息与通信工程学院2.3变量变量的命名遵循标识符定义的规则,常用的命名约定有三种:1、Unix环境常用的命名法my_age、num_of_student2、驼峰式

命名法myAge、numOfStudent3、匈牙利标记法iMyCar、bIsRight2022/11/12-29-北京邮电大学信息与通信工程学院2.3变量变量的赋值使用赋值运算符“=”可以将一个值赋给变量。例如:unsignedshortage;age=1

8;也可以在定义变量的同时进行初始化:unsignedshortage=18;或unsignedshortage(18);2022/11/12-30-北京邮电大学信息与通信工程学院2.3变量变量的赋值我们可以一次定义

多个相同数据类型的变量,也可以一次为多个变量初始化:charch1=‟a‟,ch2=‟b‟;intheight=10,width=6,area;2022/11/12-31-特性:变量可以被多次赋值,但每次赋值后,原值都会被新值覆盖

。北京邮电大学信息与通信工程学院2.3变量例2-2赋值运算符的使用#include<iostream>usingnamespacestd;voidmain(){intmyAge=18;cout<<“myAge=”<<myAge<<endl;myAge=20;cout<<“myAge=”<<

myAge<<endl;}-32-2022/11/12北京邮电大学信息与通信工程学院运行结果:myAge=18myAge=202.3变量typedef为已有的数据类型定义一个同义词,或者叫做别名。格式:typedef原类型名新类型名;例如:typedefunsignedsh

ortintUINT16UINT16i;2022/11/12-33-注意:typedef语句并没有定义一个新的数据类型,只是声明了原有数据类型的一个别名。北京邮电大学信息与通信工程学院2.3常量常量常量代表一个固定的值。严格来说,常量又分成符号常量和常数。符号常量:是用标识符表示的

常量;常数:程序中使用的具体的数据。2022/11/12-34-北京邮电大学信息与通信工程学院2.3常量符号常量C++中提供了一个关键字const,用来区分常量和变量。由于常量在程序运行过程中不能够被改变,所以要求常量在定义

的时候必须进行初始化。符号常量的定义格式:const数据类型常量名=常量值;例如:constfloatPI=3.14159;2022/11/12-35-北京邮电大学信息与通信工程学院2.3常量define关键字在C语言中使用预编译指令#define

也能够定义常量。例如:#definePI3.1415927说明:该语句属于预编译指令,不属于C++语句,因而行尾不需要使用分号。并且由于C++是向下兼容的,因而C语言的程序能够在C++的编译器下顺利运行。但是在C++编程中,建议使用const替代#define定义常量。2022/11/12-3

6-北京邮电大学信息与通信工程学院2.3常量编程时使用符号常量可以增强程序的可读性可以增强程序的可维护性2022/11/12-37-北京邮电大学信息与通信工程学院2.3常量整型常数C++中的整型常数可以使用多种数制十进制数:1008进制数:014416

进制数:0x64整型常数默认是int类型用U或u表示无符号整型,如65535U。用L或l表示长整型,如123L。2022/11/12-38-北京邮电大学信息与通信工程学院2.3常量实型常数1、小数形式例如:0.123、23.122、指数形式表

示形式:aEb代表数值:a×10b例如:123e5或123E5=123×1052022/11/12-39-注意:b必须是十进制整数,a可以是十进制整数或者小数形式的实数,并且数字a和b都不可以省略北京邮电大学信息与通

信工程学院2.3常量实型常数实型常数默认为double型可用后缀F(f)表示实数常数为float型。可用后缀L(l)表示实数常数为longdouble型。2022/11/12-40-北京邮电大学信息与通信工程学院2.3常量字符常数1、用单引号扩起来的一个字符,例如:‘

a‟、„?‟。2、转义字符以\开头的字符序列,代表特殊的意义。例如:\n、\t、\”2022/11/12-41-北京邮电大学信息与通信工程学院\a0x07bell(响铃)\n0x0A换行\r0x0D回车\t0

x09制表符\v0x0B垂直跳格\b0x08Backspace\\0x5C„\‟\"0x22双引号\‘0x27单引号\ooo1-3位8进数\xhh1-2位16进数2022/11/12-42-北京邮电大学信息与通信工程学院例2-3:打印特殊字符#include<ios

tream>usingnamespacestd;voidmain(){cout<<“输出字母:”<<‘a‟<<‟\a‟<<endl;cout<<“输出字母:”<<‘n‟<<‟\n‟;}运行结果:输出字母:a(蜂鸣器响一声)输出字母:n(换行)2022/

11/12-43-北京邮电大学信息与通信工程学院2.3常量字符常数反斜线还可以和1~3位八进制数或以x开始的1~2位十六进制数结合表示任何ASCII字符。例如:例2-3中的输出还可以写为cout<<“输出字母:”<<‘\x61‟<<‟\x07‟<<endl;cout<<“输出字母:”<<‘\x6

E‟<<‟\x0A‟;2022/11/12-44-北京邮电大学信息与通信工程学院2.3常量字符数据的存储在内存中,字符数据以ASCII码存储,可看成是单字节整数表示,所以,C++中字符数据和整数可以相互赋值。例2-4字符数据和整型数据的转换2022/11/12-45-北京邮电大学信息

与通信工程学院//例2-4:同样数据的不同输出#include<iostream>usingnamespacestd;voidmain(){intn=‟a‟;charch=97;cout<<”按整数输出内容:”<<n<<e

ndl;cout<<”按字符输出内容:”<<ch<<endl;}运行结果:按整数输出内容:97按字符输出内容:a注意:变量在输出时,根据其本身的数据类型进行输出。2022/11/12-46-北京邮电大学信息与通信工程学院2.3常量字符串常量由一对双引号括起

来的字符序列。例如:“howdoyoudo?”“helloworld!”2022/11/12-47-北京邮电大学信息与通信工程学院2.3常量字符串常量在内存中的存储字符串常量在内存中除了存储所包含字符外,还需要存储一个结束符‘\0’。一个字符数据在内存中占用1字节的空间。2022/11/12-

48-注意:字符串“A”与字符‘A’的不同北京邮电大学信息与通信工程学院2.3常量思考:字符串“\x07Operating\tsystem”有几个字符?显示结果如何?2022/11/12-49-北京邮电大学信息与通信工程学院2.3常量逻辑常数逻辑型常数只有两个:false(假)和t

rue(真)。在显示器上显示为0和1。2022/11/12-50-北京邮电大学信息与通信工程学院2.4运算符和表达式2.4运算符和表达式1、表达式2、语句和块3、运算符赋值运算符、算术运算符、关系运算符、逻辑运算符、位运算符、条件运算符、逗号运算符2022/

11/12-52-北京邮电大学信息与通信工程学院2.4运算符和表达式表达式变量、常量是存放数据的地方,那么在C++语言中这些数据是如何处理和计算的呢?在C++语言中将变量、常量和运算符有机结合在一起组成的就是表达式,利用表达式C++可以进行复杂的运算和

处理。2022/11/12-53-北京邮电大学信息与通信工程学院2.4运算符和表达式表达式表达式是操作符、操作数和分隔符号组成的序列。操作符:+-*/等操作数:变量、常量、数组等表达式总能返回一个值作为表达式的结果。2022/11/12

-54-北京邮电大学信息与通信工程学院2.4运算符和表达式表达式例如:3.2//简单表达式,值为3.22+3//常量表达式,值为5a//简单表达式,值为变量a的值x=(a+b)*c//较为复杂的表达式y=x=a+b//表达式是可以

嵌套的2022/11/12-55-北京邮电大学信息与通信工程学院2.4运算符和表达式语句和块由表达式和结尾的“;”组成一个C++语句。多条C++语句通过大括号{}括起来,组成一个块语句。一般来说属于同一个逻辑关系

的多条语句组成块语句。2022/11/12-56-北京邮电大学信息与通信工程学院2.4运算符和表达式语句和块例如:实现将变量x和y交换的语句块{inttemp=x;x=y;y=temp;}2022/11/12-57-注意:结束语句块的大括号外不用分号。北京邮电大学信息与通信工程学院2.4运算符和表

达式运算符运算符具有优先级和结合性。优先级:级别高的先运算,级别低的后运算。例如:*/高于+-结合性:自左向右结合还是自右向左结合。例如:1+2+3,+自左向右结合。2022/11/12-58-北京邮电大学信息与通信工程学院2022/11/12-59-北京邮电大学信

息与通信工程学院2.4运算符和表达式运算符根据运算符对操作数的要求不同,分成:一元运算符:仅需要一个操作数的运算符,例如++等二元运算符:需要两个操作数的运算符,例如:+、-、*、/等,三元运算符:需要三个操作数的

运算符,只有条件运算符“?:”。2022/11/12-60-北京邮电大学信息与通信工程学院2.4运算符和表达式赋值运算符赋值运算符就是:“=”例如:floatf=3.15左值:可以合法的放在“=”左边的操作数。右值:可以合法的放在“=”右边

的操作数。2022/11/12-61-注意:并不是所有的操作数都可以作为左值。符号常量就不能作左值;带运算符的表达式一般也不能作为左值。北京邮电大学信息与通信工程学院2.4运算符和表达式赋值运算符例如:

floatx,y;constfloatPI=3.14;x=3.5;//正确3.5=x;//有语法错误y=x;//正确y+2=x-10;//语法错误PI=x;//语法错误2022/11/12-62-北京邮电大学信息与通信工程学院2.4运算符和表达式算术运

算符C++提供的算术运算符包括“+,-,*,/,%,++,--”二元运算符:+(加),-(减),*,/,%一元运算符:+(正号),-(负号),++,--2022/11/12-63-北京邮电大学信息与通信工程学院2.4运算符和表达式算术

运算符几点说明:①“/”根据操作数不同,运算规律也不同:整型数为整除运算:例如5/2=2;浮点数为通常意义的除法:即5.0/2.0=2.5。②“%”取余数运算符,只能对整型数进行操作,余数的正负由被除数决定,不允许对浮点数进行操作。例2-5“/”和“%”运算符的使用2022/11/12-64

-北京邮电大学信息与通信工程学院//例2-5“/”和“%”运算符的使用。#include<iostream>usingnamespacestd;voidmain(){inta=-4,b=3;cout<<"a="<<a<<"b="<<b<<

endl;cout<<"a/b="<<a/b<<endl;cout<<"(float)a/b="<<(float)a/b<<endl;cout<<"a%b="<<a%b<<endl;cout<<"b%a="<<b%a<<en

dl;}运行结果:a=-4b=3a/b=-1(float)a/b=-1.33333a%b=-1b%a=32022/11/12-65-北京邮电大学信息与通信工程学院2.4运算符和表达式算术运算符C++中提供了两个特殊的运算符:++(自增),表示将操作数加

1;--(自减)表示将操作数减1前置(++i):先自身加1,然后再将加1的值作为(++i)表达式的值;后置(i++):将i作为(i++)表达式的值,然后自身再加1。例2-6自增运算符的使用2022/11/12-66-北京邮电大学信息与通信工程学院//例2-6自增

运算符的使用#include<iostream>usingnamespacestd;voidmain(){inti=1;cout<<”i=”<<i<<endl;cout<<”i++:”<<i++<<endl;cout

<<”i=”<<i<<endl;cout<<”++i:”<<++i<<endl;cout<<”i=”<<i<<endl;}11233北京邮电大学信息与通信工程学院运行结果:i=1i++:1i=2;++i:3i=32022/11/1

2-67-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%y2022/11/12-68-北京邮电大学信息与通信工程学院2.4运算符和表达式算术运算符例如:#include<iostream>usin

gnamespacestdvoidmain(){intx=2,y=3;x*=y+8;cout<<x<<endl;}原因:x*=y+8等价于x=x*(y+8)//显示222022/11/12-69-北京邮电大学信息

与通信工程学院2.4运算符和表达式2022/11/12-70-算术运算符算术运算符的优先级:1、+(正号),-(负号),++,--2、*,/,%3、+、-4、=、+=、-=、*=、/=、%=由高到低北京

邮电大学信息与通信工程学院2.4运算符和表达式算术运算符溢出是指运算结果超出了表达式的数据类型能够表示的范围。在进行算术运算时,很可能出现溢出。溢出不会引起编译错误的,但运行结果会出现偏差。例如:shortinti=20000,j=30000,k;cout<<(k=i+j)<<e

ndl;2022/11/12-71-输出结果:-15536北京邮电大学信息与通信工程学院2.4运算符和表达式关系运算符关系运算符有:==、!=、>=、>、<=、<关系表达式:由关系运算符将两个操作数连接起来构成的表达式。关系表达式的结果类型为bool型,值只能为tr

ue或false,屏幕显示为1或0。2022/11/12-72-北京邮电大学信息与通信工程学院2.4运算符和表达式关系运算符关系运算符的优先级:1、>=、>、<=、<2、==、!=2022/11/12-73-高低北京邮电大学信息与通信工程学院2.4运算符和表达式关系

运算符例如:inta=1,b=2,c=3;cout<<(a==b)<<endl;//结果为false,输出为0cout<<(a!=b)<<endl;//结果为true,输出为1cout<<(a>=b)<<endl;//结

果为false,输出为0cout<<(a<b)<<endl;//结果为true,输出为1boold=a>b==c>a+5;cout<<d<<endl;//结果为true,输出为12022/11/12-74-

北京邮电大学信息与通信工程学院2.4运算符和表达式逻辑运算符逻辑运算符有:&&、||、!。逻辑表达式的结果类型也为bool型,值只能为true或false,屏幕显示为1或0。2022/11/12-75-北京邮电大学信息与通信工程学院2.4运

算符和表达式逻辑运算符逻辑运算符的优先级:1、!2、&&3、||除了逻辑非,逻辑运算的级别低于关系运算。2022/11/12-76-由高到低北京邮电大学信息与通信工程学院2.4运算符和表达式逻辑运算符说明:如

果多个表达式用&&或||连接,为了提高判断效率,只要能够确定表达式的结果了,运行就不再继续。例如:inta=1,b=2;if(a>b&&b++)cout<<"b的值将等于"<<endl;cout<<b<<endl;2022/11/12-77-运行结果:2北

京邮电大学信息与通信工程学院2.4运算符和表达式位运算符一般高级语言:byteC/C++语言:bitC++语言中提供了六个位运算符,可以对整数进行位操作,分别是&(按位与),|(按位或),^(按位异或),~(按位取反),<<(左移

位),>>(右移位)。2022/11/12-78-北京邮电大学信息与通信工程学院2.4运算符和表达式按位与(&)按位与操作的作用是将两个操作数对应的每一位分别进行逻辑与操作。例如:计算3&53:000000115:000001013&5:000000012022/11/12-79-北

京邮电大学信息与通信工程学院2.4运算符和表达式按位与(&)使用按位与(&)操作可以将操作数中的若干位置0(其他位不变),或者取操作数中的若干指定位。例如:将字符变量a(char)的最低位置0:a=a&0376;取整型变量a(int)的低字节:charc=a&0377;2022/11/1

2-80-北京邮电大学信息与通信工程学院2.4运算符和表达式按位或(|)按位与操作的作用是将两个操作数对应的每一位分别进行逻辑或操作。例如:计算3|53:000000115:000001013|5:000001112022/11/12-81-北京邮电大学信息与通信工程学院2.4运算符和

表达式按位或(|)使用按位或(|)操作可以将操作数中的若干位置1(其他位不变)。例如:将整型变量的a(int)的低字节置1:a=a|0xff;2022/11/12-82-北京邮电大学信息与通信工程学院2.4运算符和表达式按位异或(^)按位异或操作的作

用是将两个操作数对应的每一位分别进行异或操作。具体运算规则:1^1=0,0^0=0,1^0=0^1=1例如:计算3^53:000000115:000001013^5:000001102022/11/12-83-北京邮电大学信息与通信工程学院2.4运算符和表

达式按位异或(^)使用按位异或(^)操作可以将操作数中的若干位反转。如果某位和0异或,结果是该位的原值;如果某位和1异或,则结果与该位原来的值相反。2022/11/12-84-思考:如果使8位二进制数01111010的后四位翻转?北京邮电大学信

息与通信工程学院2.4运算符和表达式按位取反(~)按位取反是一个一元运算符,它的作用是将操作数对应的每一位分别进行取反操作。具体运算规则:~1=0,~0=1。例如:计算~55:00000101~5:111110102022/11/12-85-北京邮电大学信息与通信工程学院2

.4运算符和表达式使用位运算实现掩码运算掩码:其实就是一个位模式。表示从一个字中选出一组位。例如:掩码0xFF表示一个字的低位字节。掩码0xFFFFFF00,它表示一个字(32位)除了最低字节外的其他高位字节。掩码~0xFF也可表示一个字除了最低字节外的其他高位字节。2022/11/12-86-

北京邮电大学信息与通信工程学院2.4运算符和表达式位运算应用举例例2-7设主机A的IP地址为IPa,子网掩码设置为MASKa,主机B的IP地址为IPb,子网掩码设置为MASKb。(1)当主机A向主机B发送IP包时

,如何判断主机B是否与自己在同一子网中?(2)当主机A和主机B通信时,两主机又如何确认对方和自己在同一子网中?2022/11/12-87-北京邮电大学信息与通信工程学院2.4运算符和表达式位运算应用举例例2-7解:(1)(IPa^IPb)&MASKa==0或(IPa&MASKa)==(IPb&

MASKa)(2)(IPa&MASKa)==(IPb&MASKb)或((IPa&MASKa)^(IPb&MASKb))==02022/11/12-88-北京邮电大学信息与通信工程学院2.4运算符和表达式

左移<<:按照指定的位数将一个二进制数值向左移动。左移后,低位补0,移出的高位舍弃。右移>>:按照指定的位数将一个二进制数值向右移动,右移后,移出的低位舍弃。如果是无符号数则高位补0,如果是有符号数则高位补符号位或0,在VC2005环境下高位补符号位。

2022/11/12-89-北京邮电大学信息与通信工程学院2.4运算符和表达式移位运算举例chara=-8;a=a>>2;cout<<”a=”<<(int)a<<endl;2022/11/12-90-北京邮电大学信息与通信工程学院2.4运

算符和表达式移位运算举例chara=2;a=a<<1;cout<<”a=”<<(int)a<<endl;2022/11/12-91-北京邮电大学信息与通信工程学院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>>y2022

/11/12-92-北京邮电大学信息与通信工程学院2.4运算符和表达式位运算符优先级位运算符的优先级由高到低依次为:1、~2、<<,>>3、&4、^5、|6、&=,|=,^=,<<=和>>=2022/11/12-93-由高到低北京邮电大学信息与通信工程学院2.4运算符和表达式条件运算符条件运算符

语法格式为:表达式1?(表达式2):(表达式3);运算的结果是:如果表达式1的值为真,则返回表达式2的值,否则返回表达式3的值。例如:intx=0,y=1;cout<<(x>y?x:y)<<endl;2022/11/12-94

-北京邮电大学信息与通信工程学院2.4运算符和表达式逗号运算符逗号表达式的语法格式为:表达式1,表达式2,……,表达式n;C++顺序计算表达式1,表达式2,……,表达式n的值,并将最后一次计算的结果作为逗号表达式的结果。例如:inta,b,c,d;d=(a=1,b=2,c=a+b,a+b+c);c

out<<d<<endl;2022/11/12-95-北京邮电大学信息与通信工程学院运行结果:62.4运算符和表达式数据类型转换当表达式中出现多种数据类型的混合运算时,往往需要进行类型转换。表达式中的类型转换分成两种:1、隐式类型转换2、强制类型转换。20

22/11/12-96-北京邮电大学信息与通信工程学院2.4运算符和表达式隐式类型转换各种二元运算符在进行运算时都要求两个操作数的数据类型一致。如果类型不一致,则系统自动对数据进行转换(隐式类型转换)。转换的基本原则:将精度较低、范围较小的类型转换成精度较高、范围较大的类型。char→sho

rt→int→long→float→double2022/11/12-97-北京邮电大学信息与通信工程学院隐式类型转换例2-8数据类型的自动转换。#include<iostream>usingnamespacestd;voidmain(

){charch='a';inti=100;doubled=123.09;cout<<ch+i<<endl;//自动转换为int型cout<<ch+i+d<<endl;//自动转换为double型}运行结果:19732

0.092.4运算符和表达式提示:在转换过程中不会造成数据精度的丢失。2022/11/12-98-北京邮电大学信息与通信工程学院2.4运算符和表达式隐式类型转换对于同一种精度的无符号数和有符号数,在进行算术运算中,有符号数向着无符号数方向进行隐式类型转换:

signed→unsigned。例如:inta=100;unsignedinti=99;cout<<i-a<<endl;2022/11/12-99-思考:如果将unsignedinti=99;改为unsignedshorti=99;结果如何?北京邮电大学信息与通信工程学院2.4运算符和表达

式隐式类型转换逻辑运算符要求参与运算的操作数为bool类型,如果是其他类型,则系统自动将其转换成bool类型。转换规则:0为false,非0为true。赋值运算符要求“=”左右两边的操作数数据类型相同,如果类型不一致,则自动将右边的

操作数类型向着左边的操作数类型转换。例如:inti=3.15;cout<<i<<endl;2022/11/12-100-北京邮电大学信息与通信工程学院2.4运算符和表达式C风格的强制类型转换语法格式为:(数据类型名)表达式或:数据类型名(表达式)例如:inti=97;cout<<(char)i

<<endl;floatf=3.75;cout<<(int)f<<endl;2022/11/12-101-北京邮电大学信息与通信工程学院2.4运算符和表达式C++的强制类型转换符语法格式为:static_cast<类型名>(表达式)例如:inti=97;cout<<static_cast<char

>(i)<<endl;floatf=3.15;cout<<static_cast<int>(f)<<endl;2022/11/12-102-北京邮电大学信息与通信工程学院2.4运算符和表达式强制类型转换几点说明:①如果强制由高精度的数据类型转换至低精度的数

据类型,数据精度将受到损失,从这个意义上说,强制类型转换是一种不安全的类型转换。②基本数据类型之间的强制转换都是允许的,但当遇到不允许的类型转换时,用C风格的类型转换,编译时不会报错;而用static_cast,在编译时就

会报错。2022/11/12-103-建议:在C++编程时要用static_cast进行强制类型转换。北京邮电大学信息与通信工程学院2.5基本输入输出2022/11/12-104-北京邮电大学信息与通信工程学院2.

5基本输入输出在iostream库中包含有一个标准输入流对象cin和一个标准输出流对象cout,分别用来实现从键盘读取数据,以及将数据在屏幕输出。另外,还可以定义文件流对象,实现文件的读/写操作1、标准输入流cin2、标准输出流cout3、I/O流的格式控制4、文件的输入

输出2022/11/12-105-北京邮电大学信息与通信工程学院2.5基本输入输出标准输入流cincin负责从键盘读取数据,使用提取操作符“>>”就可以将键盘键入的数据读入到变量中。语法格式为:cin>>变量1>>变量2…>>变量n;例如:inta,b;ch

arch;cin>>a>>b>>ch;2022/11/12-106-北京邮电大学信息与通信工程学院2.5基本输入输出例2-9:计算从键盘输入的若干个整数的和。#include<iostream>usin

gnamespacestd;voidmain(){intsum=0,value;while(cin>>value)//如果能从cin提取数值,sum+=value;//则cin的值为真,执行循环cout<<"sumis:"<<sum<<endl;}运行结果:12345^z//键盘输入sumis:1

52022/11/12-107-北京邮电大学信息与通信工程学院2.5基本输入输出标准输出流coutcout负责将变量或常量中的数据输出到屏幕,使用插入操作符“<<”就可以将变量或常量的数据显示在屏幕上。cout能够自动识别“<<”后面的数据类型并进行显示,并且可以从左到右一次显示多个变量。例如

:cout<<”Helloworld!\n”;2022/11/12-108-北京邮电大学信息与通信工程学院2.5基本输入输出例2-10:cout的使用#include<iostream>usingnamespacestd;voidmain(){inta,b;charch;co

ut<<”请按顺序输入2整数和1字符:\n”;cin>>a>>b>>ch;cout<<”a=”<<a<<”b=”<<b<<”ch=”<<ch<<endl;}运行结果:请按顺序输入两个整数和一个字符:12a//键盘输入a=1b=2ch=a//屏幕输出2022/1

1/12-109-北京邮电大学信息与通信工程学院2.5基本输入输出IO流的格式控制库文件:iomanip常用操纵符:setfill(c)设置填充字符setw(n)设置域宽为nsetiosflags(ios::left)设置数据输出左对齐setiosflags(ios::right)设置数

据输出右对齐2022/11/12-110-注意:用cout输出数据默认的对齐方式是右对齐。北京邮电大学信息与通信工程学院2.5基本输入输出IO流的格式控制setw(n)设置域宽,即设置“<<”符号后面的数据占用的屏幕宽度。例如:c

out<<setw(8)<<‟a‟<<setw(8)<<‟b‟<<endl;2022/11/12-111-北京邮电大学信息与通信工程学院输出结果:_______a_______b2.5基本输入输出IO流的格式控制setfill(c)设置填充字符,即“<<”符号后面的

数据长度小于域宽时,使用什么字符进行填充。例如:cout<<setfill(„*‟)<<setw(5)<<‟a‟<<endl;2022/11/12-112-北京邮电大学信息与通信工程学院输出结果:****a例2-11setw()和setfill()的综合

使用。#include<iostream>#include<iomanip>usingnamespacestd;voidmain(){cout<<setfill('*')<<setw(2)<<'\n'<<setw(3)<<'\n'<<setw(4)<<'\

n'<<setw(5)<<'\n'<<setw(6)<<'\n'<<setw(7)<<'\n'<<setw(8)<<'\n';}运行结果:****************************2.5基本输入

输出2022/11/12-113-北京邮电大学信息与通信工程学院2.5基本输入输出IO流的格式控制关于setw()几点说明:①除了setw()控制符外,其他控制符一旦设置,则对其后的所有输入输出产生影响。而setw()控制符只对其后输出的第一个数据有效,对其

他数据没有影响。例如:cout<<setw(8)<<‟a‟<<‟b‟<<endl;2022/11/12-114-输出结果:_______ab北京邮电大学信息与通信工程学院2.5基本输入输出IO流的格式控制关于setw

()几点说明:②setw()的默认为setw(0),意思是按实际输出。如果输出的数值占用的宽度超过setw(intn)设置的宽度,则按实际宽度输出。例如:floatf=0.12345;cout<<setw(3)<<f<<endl;2022/11/12-115-输出结果:0.12345北京邮电

大学信息与通信工程学院2.5基本输入输出I/O流的格式控制C++默认输出浮点数的有效位为6位,那么要想控制输出的数据的长度,该如何呢?例如:floatf=3.1234567;如何让显示结果为3.12?C++提供了setprecision(intn)可以控制显示浮点数的有效位。例2

-12控制浮点数的数字个数。2022/11/12-116-北京邮电大学信息与通信工程学院//例2-12控制浮点数的数字个数。#include<iostream>#include<iomanip>usingnamespacestd;v

oidmain(){floatf=17/7.0;cout<<f<<endl;cout<<setprecision(0)<<f<<endl;cout<<setprecision(1)<<f<<endl;cout<<setprecision(2)<<f

<<endl;cout<<setprecision(3)<<f<<endl;cout<<setprecision(6)<<f<<endl;cout<<setprecision(8)<<f<<endl;}运行结果:2.428572.4284722.42.432.428572.42

857152022/11/12-117-北京邮电大学信息与通信工程学院2.5基本输入输出I/O流的格式控制如何控制小数的位数?setiosflags(ios::fixed)控制符是用定点方式表示浮点数,将setprecision(intn)和setiosfla

gs(ios::fixed)结合,可以使用setprecision(intn)控制小数点右边小数的个数。当设置为定点格式时,若不设置精度则显示6位有效小数。例2-13定点小数的输出。2022/11/12-118-北京邮电大学信息与通信工程学院//例2-12

定点小数的输出。#include<iostream>#include<iomanip>usingnamespacestd;voidmain(){floatf=17/7.0;cout<<setiosflags(ios::fixed);cout<<f<<endl;cout<<setpreci

sion(0)<<f<<endl;cout<<setprecision(2)<<f<<endl;cout<<setprecision(3)<<f<<endl;cout<<setprecision(4)<<f<<endl;}运行结果:2.42587122.432.4292

.42862022/11/12-119-北京邮电大学信息与通信工程学院2.5基本输入输出I/O流的格式控制如何控制指数表示法的小数个数?setiosflags(ios::scientific)控制符使用指数方式显示浮点数,将setprecis

ion(intn)和setiosflags(ios::scientific)结合,可以使用setprecision(intn)控制指数表示法的小数位数。用科学记数格式显示实数时,e前面总是带有一位整数的实数。在没有设置精度时,显示6位有效的小数位。例2-14指数方式控制小数的输出。20

22/11/12-120-北京邮电大学信息与通信工程学院//例2-14指数方式控制小数的输出。#include<iostream>#include<iomanip>usingnamespacestd;voidmain(){floatf=1

7/7.0;cout<<setiosflags(ios::scientific);cout<<f<<endl;cout<<setprecision(2)<<f<<endl;cout<<setprecis

ion(3)<<f<<endl;cout<<setprecision(4)<<f<<endl;}运行结果:2.425872e+0002.43e+0002.429e+0002.4286e+000注意:在使用操纵符将小数截短显示时,将进行四舍五入处理。2

022/11/12-121-北京邮电大学信息与通信工程学院2.5基本输入输出文件的输入输出文件(磁盘文件):存储在外部存储器上的数据的集合。根据文件中数据不同的组织形式,通常把文件分为:1、文本文件2、二进制

文件2022/11/12-122-北京邮电大学信息与通信工程学院2.5基本输入输出文件的输入输出文件的读写操作:当要对磁盘文件进行操作时,使用的是文件流对象。操作步骤:①定义文件流对象使用标准库的ifstream类和ofstream类来定义文件流对象。ifstream类提供文件的读操作。o

fstream类提供文件的写操作。2022/11/12-123-北京邮电大学信息与通信工程学院2.5基本输入输出文件的输入输出操作步骤:②指定和文件流对象关联的磁盘文件在定义流对象的同时指定关联文件。或,先定义对象,然

后通过调用它的open()成员函数来指定关联文件。在指定文件流对象和磁盘文件关联的同时,还可以指定文件打开模式。2022/11/12-124-北京邮电大学信息与通信工程学院2.5基本输入输出文件的输入输出操作步骤:③使用插入运算符“<<”和提取运算符“>>”进行文件

(文本文件)的读/写。④文件读/写完毕后,可以调用close()成员函数关闭文件,该操作会解除已建立的文件流对象和磁盘文件之间的关联。例2-15读取保存在文件idata.txt中的一组整数,计算它们的和,并显示在屏幕上。2022/11/12-125-北京邮电大学信息与通信工程学院/

/例2.15读取保存在文件idata.txt中的一组整数,计算它们的和,并显示在屏幕上。#include<iostream>#include<fstream>usingnamespacestd;voidmain(){ifstreamifile("idata.txt");intsum=0,valu

e;cout<<"data:";while(ifile>>value){cout<<value<<"";sum+=value;}cout<<endl;cout<<"sumis:"<<sum<<endl;}运行结果:data:1020304050

sumis:150注意:因为ifstream类和ofstream类是在头文件fstream中声明的,如果程序中要用到它们,则需要把头文件fstream包含进来2022/11/12-126-北京邮电大学信息与通信工程学院2.6使用string类型处理字符串2022/11/12-127-

北京邮电大学信息与通信工程学院2.6使用string类型处理字符串字符串处理方式C++的基本数据类型中没有字符串数据类型,那么它又如何进行字符串的处理呢?1、使用字符数组或者字符指针来处理。2、使用C++标准模板库(STL)中提供的string类型来进行字符串的处理。2022/11/1

2-128-北京邮电大学信息与通信工程学院2.6使用string类型处理字符串string对象的定义和初始化可以像前面学过的定义int型的变量一样,来定义string类型的变量,我们称之为string对象。例如:stringstr

1;stringstr2("Hello");stringstr3=str2;2022/11/12-129-北京邮电大学信息与通信工程学院2.6使用string类型处理字符串string对象的操作string对象的输入/输出可以直接使用流对象cout、cin以及“<<”和“>>”运算符来处理str

ing对象。例2-16string对象的输入/输出。2022/11/12-130-北京邮电大学信息与通信工程学院//例2-16string对象的输入/输出。#include<iostream>#include<string>us

ingnamespacestd;voidmain(){strings1,s2;cout<<"请输入两个字符串:\n";cin>>s1>>s2;cout<<s1<<","<<s2<<endl;}运行结果:Helloworld!//键盘输入Hello,worl

d!//屏幕输出注意:要使用string类型,必须把相关的头文件string包含进来。2022/11/12-131-北京邮电大学信息与通信工程学院2.6使用string类型处理字符串string对象的操作string对象的赋值可以使用赋值运算符“=”实

现string对象的赋值例如:stringstr1,str2;str1="Happy";str2=str1;2022/11/12-132-北京邮电大学信息与通信工程学院2.6使用string类型处理字符串string对象的操作string对象的连接str

ing对象可以很方便地通过运算符“+”连接起来。string对象还可以通过运算符“+=”,把一个string对象追加到另一个string对象的末尾。例如:stringstr1("Happy");stringstr2("Birthday\n");strin

gstr3=str1+str2;str1+=str2;2022/11/12-133-北京邮电大学信息与通信工程学院2.6使用string类型处理字符串string对象的操作string对象的比较string类型定义了关系运算符“==”、“!=”、“>”、“

>=”、“<”、“<=”,用来比较两个string对象的大小。例2-17string对象的比较。2022/11/12-134-北京邮电大学信息与通信工程学院//例2-17string对象的比较#include<iostream>#include<string>usingname

spacestd;voidmain(){stringstr1="Hello",str2="hello";stringstr3="Hello",str4="hello!",str5="Hi";cout<<(str1!=str2)<<endl;cout<<(str1==str3)<<end

l;cout<<(str1<str5)<<endl;cout<<(str2>str4)<<endl;}运行结果:1110提示:这些关系运算符实际上比较的是两个string对象对应的字符,也就是字符的ASCII码值。2022/11/12-13

5-北京邮电大学信息与通信工程学院本章小结C++语言的基本数据类型。不同类型的数据有不同的表示和处理方法,具有不同运算规则。变量的实质是内存中的一个地址空间,在这个地址空间中可以进行数据的存储和读取。C++语言提供了丰富的运算符,不同的运

算符优先级和结合性是不同的。利用表达式可以对数据进行复杂的运算和处理。标准的C++提供了一个包含输入/输出的iostream库,使用流对象可进行标准设备以及磁盘文件的输入输出。利用操纵符可以控制IO流的格式。使用C++标准模板库(STL)中提供的string类型可以安全、方便地进行字符串的处理。2

022/11/12-136-北京邮电大学信息与通信工程学院

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?