欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

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

    • 资源ID:6154067       资源大小:921.50KB        全文页数:136页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    2023/9/30,1,C+高级语言程序设计,第2章 基本数据类型与表达式北京邮电大学信息与通信工程学院,北京邮电大学信息与通信工程学院,2023/9/30,2,程序中最基本的要素是数据类型,根据数据类型可以为变量或常量分配内存空间,将变量、常量和运算符结合在一起组成表达式,进行复杂的运算和处理。,北京邮电大学信息与通信工程学院,2023/9/30,-3-,第2章 基本数据类型与表达式,2.1 词法记号和标识符2.2 基本数据类型2.3 变量和常量2.4 运算符和表达式2.5 基本输入输出2.6 使用string类型处理字符串,北京邮电大学信息与通信工程学院,2023/9/30,-4-,2.1 词法记号和标识符,北京邮电大学信息与通信工程学院,2.1 词法记号和标识符,C+字符集英文字母:AZ,az数字字符:09特殊字符:+-*/%=!#.,()空格,2023/9/30,-5-,北京邮电大学信息与通信工程学院,2.1 词法记号和标识符,C+关键字什么是关键字?预先定义好的标识符,C+编译器对其进行特殊处理。如何识别关键字?使用VC2005的编辑环境时,缺省是蓝色的字符即为关键字。,2023/9/30,-6-,北京邮电大学信息与通信工程学院,2.1 词法记号和标识符,标识符 标识符是程序员声明的单词,它命名程序正文中的一些实体,如函数名、变量名、类名、对象名等。C+标识符的构成规则如下:,2023/9/30,-7-,1、不能是C+的关键字;2、第一个字符必须是大写、小写字母或下划线;3、不包含空格和“+、-、;”等特殊字符;4、为方便输入,长度一般不超过31个字符。,北京邮电大学信息与通信工程学院,2.1 词法记号和标识符,例如:合法的标识符:apple、_Student、_123、No1、max_num 不合法的标识符:51job、max num、-abc,2023/9/30,-8-,注意:C+的标识符是大小写敏感的,即abcABC。,北京邮电大学信息与通信工程学院,2.1 词法记号和标识符,分隔符 分隔符用于分隔程序中的正文,在C+中使用下列字符作为分隔符:(),:;这些分隔符不表示实际的操作,仅用于构造程序。比如“;”用来作为一句完整语句的结束。,2023/9/30,-9-,北京邮电大学信息与通信工程学院,2.1 词法记号和标识符,空白 在C+语句中经常出现空白(制表符、空格、空行)等,通常都忽略不计。,2023/9/30,-10-,北京邮电大学信息与通信工程学院,2.2 基本数据类型,北京邮电大学信息与通信工程学院,2023/9/30,-11-,2.2 基本数据类型,什么是数据类型?数据是程序处理的对象,数据根据其本身的特点进行分类,从而形成不同的数据类型。例如:数学中有自然数、整数、实数 不同类型的数据有不同的表示和处理方法,具有不同运算规则,2023/9/30,-12-,北京邮电大学信息与通信工程学院,2.2 基本数据类型,基本数据类型 整型:int 字符型:char、wchar_t 实型:float、double 逻辑型:bool,2023/9/30,-13-,北京邮电大学信息与通信工程学院,2.2 基本数据类型,修饰符 在C+中描述为了更加准确的描述数据类型,提供了4个关键字用来修饰基本的数据类型:1、长型 long 2、短型 short 3、有符号 signed 4、无符号 unsigned,2023/9/30,-14-,北京邮电大学信息与通信工程学院,1、short:仅用来修饰int,称为短整型,占2字节内存,也可直接简写为short;2、long:仅修饰int和double,在不同的编译环境中使用long修饰的double类型数据所占内存不同。3、unsigned:用来修饰char、short和int,表示该数据类型为无符号数。4、signed:用来修饰char、short和int,表示该数据类型为有符号数,为缺省设置。,2023/9/30,-15-,北京邮电大学信息与通信工程学院,2.2 基本数据类型,数据类型与内存空间 不同的数据类型,加上不同的修饰符就具有了不同的特点,在内存中占用的空间也不同,因而其所能表示的数值范围也不尽相同。内存单元的单位是字节,因此用来表示数据类型的长度的单位也是字节。,2023/9/30,-16-,北京邮电大学信息与通信工程学院,2.2 基本数据类型,数据类型与内存空间特定数据类型在内存中占用的内存因机器的不同而不同 整型int的长度等于机器的字长:16位机:int=2字节;32位机:int=4字节。,2023/9/30,-17-,北京邮电大学信息与通信工程学院,2.2 基本数据类型,数据类型与内存空间如果需要编写可移植性好的程序,应将整型声明为short或long。因为short和long表示的数据长度是固定的,任何支持标准C+的编译器都是如此。,-18-,2023/9/30,北京邮电大学信息与通信工程学院,2.2 基本数据类型,例2-1 打印各种数据类型的长度 编写一个程序,输出基本数据类型char,int,float,double,bool的长度。提示:使用sizeof(数据类型)能够获取不同数据类型的长度。,-19-,2023/9/30,北京邮电大学信息与通信工程学院,/例2-1 显示各种数据类型的长度#include using namespace std;void main()coutchar:sizeof(char)字节n;coutint:sizeof(int)字节n;coutfloat:sizeof(float)字节n;coutdouble:sizeof(double)字节n;coutbool:sizeof(bool)字节n;,-20-,在32位机上运行结果 char:1字节 int:4字节 float:4字节 double:8字节 bool:1字节,2023/9/30,北京邮电大学信息与通信工程学院,2.3 变量和常量,-21-,北京邮电大学信息与通信工程学院,2023/9/30,2.3 变量和常量,概述 程序所处理的数据不仅分为不同的数据类型,而且每种类型的数据还分为变量和常量。程序在运行中就是通过这些变量和常量来操作数据的。,2023/9/30,-22-,北京邮电大学信息与通信工程学院,2.3 变量,什么是变量?在C+中,变量是存储信息的地方。变量的实质是内存中的一个地址空间,在这个地址空间中可以进行数据的存储和读取。,2023/9/30,-23-,北京邮电大学信息与通信工程学院,定义变量的格式数据类型 变量名1,变量名2,变量名n;例如:定义各种类型的变量 int num;float f;char ch;short s;double area,length;,2023/9/30,-24-,2.3 变量,北京邮电大学信息与通信工程学院,2.3 变量,定义变量的实质例如:int num;系统根据所指定的数据类型int,从地址xxxxxxxH开始,为变量num分配4个字节单元。变量num的取值范围为2312311。,2023/9/30,-25-,北京邮电大学信息与通信工程学院,2.3 变量,定义变量的实质例如:int num;编程时,可以直接使用变量名num对存储在该内存空间的数据,也就是变量值进行存取。变量名和地址xxxxxxxH之间的对应关系由系统来管理。,2023/9/30,-26-,北京邮电大学信息与通信工程学院,2.3 变量,几点说明 在创建或定义变量时,需要指明该变量的数据类型和名称。数据类型:决定变量的存储方式和可以进行的操作;变量名称:用来区分不同的变量。,2023/9/30,-27-,北京邮电大学信息与通信工程学院,2.3 变量,几点说明在C+程序中使用变量,必须“先定义或声明,后使用”,而且只能定义一次。变量定义语句的位置,C+中没有要求,放在第一次使用该变量之前的任何位置均可以。,2023/9/30,-28-,建议:把变量定义语句放在首次使用它的地方,这样可以提高程序的可读性。,北京邮电大学信息与通信工程学院,2.3 变量,变量的命名遵循标识符定义的规则,常用的命名约定有三种:1、Unix环境常用的命名法 my_age、num_of_student 2、驼峰式命名法 myAge、numOfStudent 3、匈牙利标记法 iMyCar、bIsRight,2023/9/30,-29-,北京邮电大学信息与通信工程学院,2.3 变量,变量的赋值 使用赋值运算符“=”可以将一个值赋给变量。例如:unsigned short age;age=18;也可以在定义变量的同时进行初始化:unsigned short age=18;或 unsigned short age(18);,2023/9/30,-30-,北京邮电大学信息与通信工程学院,2.3 变量,变量的赋值 我们可以一次定义多个相同数据类型的变量,也可以一次为多个变量初始化:char ch1=a,ch2=b;int height=10,width=6,area;,2023/9/30,-31-,特性:变量可以被多次赋值,但每次赋值后,原值都会被新值覆盖。,北京邮电大学信息与通信工程学院,2.3 变量,例2-2 赋值运算符的使用#include using namespace std;void main()int myAge=18;cout“myAge=”myAgeendl;myAge=20;cout“myAge=”myAgeendl;,-32-,2023/9/30,北京邮电大学信息与通信工程学院,运行结果:myAge=18 myAge=20,2.3 变量,typedef 为已有的数据类型定义一个同义词,或者叫做别名。格式:typedef 原类型名 新类型名;例如:typedef unsigned short int UINT16 UINT16 i;,2023/9/30,-33-,注意:typedef语句并没有定义一个新的数据类型,只是声明了原有数据类型的一个别名。,北京邮电大学信息与通信工程学院,2.3 常量,常量 常量代表一个固定的值。严格来说,常量又分成符号常量和常数。符号常量:是用标识符表示的常量;常数:程序中使用的具体的数据。,2023/9/30,-34-,北京邮电大学信息与通信工程学院,2.3 常量,符号常量 C+中提供了一个关键字const,用来区分常量和变量。由于常量在程序运行过程中不能够被改变,所以要求常量在定义的时候必须进行初始化。符号常量的定义格式:const 数据类型 常量名=常量值;例如:const float PI=3.14159;,2023/9/30,-35-,北京邮电大学信息与通信工程学院,2.3 常量,define关键字 在C语言中使用预编译指令#define也能够定义常量。例如:#define PI 3.1415927,说明:该语句属于预编译指令,不属于C+语句,因而行尾不需要使用分号。并且由于C+是向下兼容的,因而C语言的程序能够在C+的编译器下顺利运行。但是在C+编程中,建议使用const替代#define定义常量。,2023/9/30,-36-,北京邮电大学信息与通信工程学院,2.3 常量,编程时使用符号常量可以增强程序的可读性可以增强程序的可维护性,2023/9/30,-37-,北京邮电大学信息与通信工程学院,2.3 常量,整型常数 C+中的整型常数可以使用多种数制十进制数:100 8进制数:0144 16进制数:0 x64整型常数默认是int类型用 U或u表示无符号整型,如65535U。用 L或l表示长整型,如123L。,2023/9/30,-38-,北京邮电大学信息与通信工程学院,2.3 常量,实型常数1、小数形式 例如:0.123、23.12 2、指数形式表示形式:aEb代表数值:a10b例如:123e5或123E5=123105,2023/9/30,-39-,注意:b必须是十进制整数,a可以是十进制整数或者小数形式的实数,并且数字a和b都不可以省略,北京邮电大学信息与通信工程学院,2.3 常量,实型常数实型常数默认为double型可用后缀 F(f)表示实数常数为float型。可用后缀L(l)表示实数常数为long double型。,2023/9/30,-40-,北京邮电大学信息与通信工程学院,2.3 常量,字符常数 1、用单引号扩起来的一个字符,例如:a、?。2、转义字符 以开头的字符序列,代表特殊的意义。例如:n、t、”,2023/9/30,-41-,北京邮电大学信息与通信工程学院,a0 x07bell(响铃)n0 x0A换行r0 x0D回车t0 x09制表符v0 x0B垂直跳格b0 x08Backspace0 x5C0 x22双引号0 x27单引号 ooo 1-3位8进数 xhh 1-2位16进数,2023/9/30,-42-,北京邮电大学信息与通信工程学院,例2-3:打印特殊字符,#include using namespace std;void main()cout“输出字母:”aaendl;cout“输出字母:”nn;,运行结果:输出字母:a(蜂鸣器响一声)输出字母:n(换行),2023/9/30,-43-,北京邮电大学信息与通信工程学院,2.3 常量,字符常数反斜线还可以和13位八进制数或以x开始的12位十六进制数结合表示任何ASCII字符。例如:例2-3中的输出还可以写为cout“输出字母:”x61x07endl;cout“输出字母:”x6Ex0A;,2023/9/30,-44-,北京邮电大学信息与通信工程学院,2.3 常量,字符数据的存储在内存中,字符数据以ASCII码存储,可看成是单字节整数表示,所以,C+中字符数据和整数可以相互赋值。例2-4 字符数据和整型数据的转换,2023/9/30,-45-,北京邮电大学信息与通信工程学院,/例2-4:同样数据的不同输出#include using namespace std;void main()int n=a;char ch=97;cout”按整数输出内容:”nendl;cout”按字符输出内容:”chendl;,运行结果:按整数输出内容:97 按字符输出内容:a,注意:变量在输出时,根据其本身的数据类型进行输出。,2023/9/30,-46-,北京邮电大学信息与通信工程学院,2.3 常量,字符串常量由一对双引号括起来的字符序列。例如:“how do you do?”“hello world!”,2023/9/30,-47-,北京邮电大学信息与通信工程学院,2.3 常量,字符串常量在内存中的存储字符串常量在内存中除了存储所包含字符外,还需要存储一个结束符0。一个字符数据在内存中占用1字节的空间。,2023/9/30,-48-,注意:字符串“A”与字符A的不同,北京邮电大学信息与通信工程学院,2.3 常量,思考:字符串“x07Operatingtsystem”有几个字符?显示结果如何?,2023/9/30,-49-,北京邮电大学信息与通信工程学院,2.3 常量,逻辑常数 逻辑型常数只有两个:false(假)和true(真)。在显示器上显示为0和1。,2023/9/30,-50-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,2.4 运算符和表达式,1、表达式2、语句和块3、运算符 赋值运算符、算术运算符、关系运算符、逻辑运算符、位运算符、条件运算符、逗号运算符,2023/9/30,-52-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,表达式 变量、常量是存放数据的地方,那么在C+语言中这些数据是如何处理和计算的呢?在C+语言中将变量、常量和运算符有机结合在一起组成的就是表达式,利用表达式C+可以进行复杂的运算和处理。,2023/9/30,-53-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,表达式 表达式是操作符、操作数和分隔符号组成的序列。操作符:+-*/等 操作数:变量、常量、数组等 表达式总能返回一个值作为表达式的结果。,2023/9/30,-54-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,表达式例如:3.2/简单表达式,值为3.2 2+3/常量表达式,值为5 a/简单表达式,值为变量a的值x=(a+b)*c/较为复杂的表达式 y=x=a+b/表达式是可以嵌套的,2023/9/30,-55-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,语句和块 由表达式和结尾的“;”组成一个C+语句。多条C+语句通过大括号括起来,组成一个块语句。一般来说属于同一个逻辑关系的多条语句组成块语句。,2023/9/30,-56-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,语句和块例如:实现将变量x和y交换的语句块 int temp=x;x=y;y=temp;,2023/9/30,-57-,注意:结束语句块的大括号外不用分号。,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,运算符 运算符具有优先级和结合性。优先级:级别高的先运算,级别低的后运算。例如:*/高于+-结合性:自左向右结合还是自右向左结合。例如:1+2+3,+自左向右结合。,2023/9/30,-58-,北京邮电大学信息与通信工程学院,2023/9/30,-59-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,运算符根据运算符对操作数的要求不同,分成:一元运算符:仅需要一个操作数的运算符,例如+等 二元运算符:需要两个操作数的运算符,例如:+、-、*、/等,三元运算符:需要三个操作数的运算符,只有条件运算符“?:”。,2023/9/30,-60-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,赋值运算符赋值运算符就是:“=”例如:float f=3.15 左值:可以合法的放在“=”左边的操作数。右值:可以合法的放在“=”右边的操作数。,2023/9/30,-61-,注意:并不是所有的操作数都可以作为左值。符号常量就不能作左值;带运算符的表达式一般也不能作为左值。,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,赋值运算符例如:float x,y;const float PI=3.14;x=3.5;/正确 3.5=x;/有语法错误 y=x;/正确 y+2=x-10;/语法错误PI=x;/语法错误,2023/9/30,-62-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,算术运算符 C+提供的算术运算符包括“+,-,*,/,%,+,-”二元运算符:+(加),-(减),*,/,%一元运算符:+(正号),-(负号),+,-,2023/9/30,-63-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,算术运算符 几点说明:“/”根据操作数不同,运算规律也不同:整型数为整除运算:例如5/2=2;浮点数为通常意义的除法:即5.0/2.0=2.5。“%”取余数运算符,只能对整型数进行操作,余数的正负由被除数决定,不允许对浮点数进行操作。例2-5“/”和“%”运算符的使用,2023/9/30,-64-,北京邮电大学信息与通信工程学院,/例2-5“/”和“%”运算符的使用。#include using namespace std;void main()int a=-4,b=3;couta=a b=bendl;couta/b=a/bendl;cout(float)a/b=(float)a/bendl;couta%b=a%bendl;coutb%a=b%aendl;,运行结果:a=-4 b=3 a/b=-1(float)a/b=-1.33333 a%b=-1 b%a=3,2023/9/30,-65-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,算术运算符 C+中提供了两个特殊的运算符:+(自增),表示将操作数加1;-(自减)表示将操作数减1前置(+i):先自身加1,然后再将加1的值作为(+i)表达式的值;后置(i+):将i作为(i+)表达式的值,然后自身再加1。例2-6自增运算符的使用,2023/9/30,-66-,北京邮电大学信息与通信工程学院,/例2-6 自增运算符的使用#include using namespace std;void main()int i=1;cout”i=”iendl;cout”i+:”i+endl;cout”i=”iendl;cout”+i:”+iendl;cout”i=”iendl;,1,1,2,3,3,北京邮电大学信息与通信工程学院,运行结果:i=1 i+:1 i=2;+i:3 i=3,2023/9/30,-67-,2.4 运算符和表达式,算术运算符 在C+中可以将算术运算符和赋值运算符结合在一起进行运算,因此C+还提供5种复合的赋值运算符:+=,-=,*=,/=和%=。例如:x+=y 相当于 x=x+y x-=y相当于 x=x-y x*=y相当于 x=x*y x/=y相当于 x=x/y x%=y相当于 x=x%y,2023/9/30,-68-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,算术运算符例如:#include using namespace stdvoid main()int x=2,y=3;x*=y+8;coutxendl;,原因:x*=y+8 等价于 x=x*(y+8),/显示22,2023/9/30,-69-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,2023/9/30,-70-,算术运算符 算术运算符的优先级:1、+(正号),-(负号),+,-2、*,/,%3、+、-4、=、+=、-=、*=、/=、%=,由高到低,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,算术运算符溢出是指运算结果超出了表达式的数据类型能够表示的范围。在进行算术运算时,很可能出现溢出。溢出不会引起编译错误的,但运行结果会出现偏差。例如:short int i=20000,j=30000,k;cout(k=i+j)endl;,2023/9/30,-71-,输出结果:-15536,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,关系运算符 关系运算符有:=、!=、=、=、关系表达式:由关系运算符将两个操作数连接起来构成的表达式。关系表达式的结果类型为bool型,值只能为true或false,屏幕显示为1或0。,2023/9/30,-72-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,关系运算符 关系运算符的优先级:1、=、=、2、=、!=,2023/9/30,-73-,高低,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,关系运算符 例如:int a=1,b=2,c=3;cout=b)b=ca+5;coutdendl;/结果为true,输出为1,2023/9/30,-74-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,逻辑运算符 逻辑运算符有:&、|、!。逻辑表达式的结果类型也为bool型,值只能为true或false,屏幕显示为1或0。,2023/9/30,-75-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,逻辑运算符 逻辑运算符的优先级:1、!2、&3、|除了逻辑非,逻辑运算的级别低于关系运算。,2023/9/30,-76-,由高到低,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,逻辑运算符 说明:如果多个表达式用,2023/9/30,-77-,运行结果:2,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,位运算符 一般高级语言:byte C/C+语言:bit C+语言中提供了六个位运算符,可以对整数进行位操作,分别是&(按位与),|(按位或),(按位异或),(按位取反),(右移位)。,2023/9/30,-78-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,按位与(&)按位与操作的作用是将两个操作数对应的每一位分别进行逻辑与操作。例如:计算3&5 3:0 0 0 0 0 0 1 1 5:0 0 0 0 0 1 0 1 3&5:0 0 0 0 0 0 0 1,2023/9/30,-79-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,按位与(,2023/9/30,-80-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,按位或(|)按位与操作的作用是将两个操作数对应的每一位分别进行逻辑或操作。例如:计算3|5 3:0 0 0 0 0 0 1 1 5:0 0 0 0 0 1 0 1 3|5:0 0 0 0 0 1 1 1,2023/9/30,-81-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,按位或(|)使用按位或(|)操作可以将操作数中的若干位置1(其他位不变)。例如:将整型变量的a(int)的低字节置1:a=a|0 xff;,2023/9/30,-82-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,按位异或()按位异或操作的作用是将两个操作数对应的每一位分别进行异或操作。具体运算规则:11=0,00=0,10=01=1 例如:计算35 3:0 0 0 0 0 0 1 1 5:0 0 0 0 0 1 0 1 3 5:0 0 0 0 0 1 1 0,2023/9/30,-83-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,按位异或()使用按位异或()操作可以将操作数中的若干位反转。如果某位和0异或,结果是该位的原值;如果某位和1异或,则结果与该位原来的值相反。,2023/9/30,-84-,思考:如果使8位二进制数01111010的后四位翻转?,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,按位取反()按位取反是一个一元运算符,它的作用是将操作数对应的每一位分别进行取反操作。具体运算规则:1=0,0=1。例如:计算5 5:0 0 0 0 0 1 0 1 5:1 1 1 1 1 0 1 0,2023/9/30,-85-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,使用位运算实现掩码运算 掩码:其实就是一个位模式。表示从一个字中选出一组位。例如:掩码0 xFF表示一个字的低位字节。掩码0 xFFFFFF00,它表示一个字(32位)除了最低字节外的其他高位字节。掩码0 xFF也可表示一个字除了最低字节外的其他高位字节。,2023/9/30,-86-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,位运算应用举例例2-7 设主机A的IP地址为IPa,子网掩码设置为MASKa,主机B的IP地址为IPb,子网掩码设置为MASKb。(1)当主机A向主机B发送IP包时,如何判断主机B是否与自己在同一子网中?(2)当主机A和主机B通信时,两主机又如何确认对方和自己在同一子网中?,2023/9/30,-87-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,位运算应用举例例2-7解:(1)(IPaIPb)&MASKa=0 或(IPa&MASKa)=(IPb&MASKa)(2)(IPa&MASKa)=(IPb&MASKb)或(IPa&MASKa)(IPb&MASKb)=0,2023/9/30,-88-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,左移:按照指定的位数将一个二进制数值向右移动,右移后,移出的低位舍弃。如果是无符号数则高位补0,如果是有符号数则高位补符号位或0,在VC2005环境下高位补符号位。,2023/9/30,-89-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,移位运算举例char a=-8;a=a2;cout”a=”(int)aendl;,2023/9/30,-90-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,移位运算举例char a=2;a=a1;cout”a=”(int)aendl;,2023/9/30,-91-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,位运算符 在C+中可以将位运算符和赋值运算符结合在一起进行运算,因此C+还提供另外5种复合赋值运算符&=,|=,=,=。例如:x&=y 相当于 x=x&y x|=y 相当于x=x|y x=y 相当于x=xy x=y 相当于 x=xy,2023/9/30,-92-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,位运算符优先级位运算符的优先级由高到低依次为:1、2、3、&4、5、|6、&=,|=,=,=,2023/9/30,-93-,由高到低,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,条件运算符 条件运算符语法格式为:表达式1?(表达式2):(表达式3);运算的结果是:如果表达式1的值为真,则返回表达式2的值,否则返回表达式3的值。例如:int x=0,y=1;couty?x:y)endl;,2023/9/30,-94-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,逗号运算符 逗号表达式的语法格式为:表达式1,表达式2,表达式n;C+顺序计算表达式1,表达式2,表达式n的值,并将最后一次计算的结果作为逗号表达式的结果。例如:int a,b,c,d;d=(a=1,b=2,c=a+b,a+b+c);coutdendl;,2023/9/30,-95-,北京邮电大学信息与通信工程学院,运行结果:6,2.4 运算符和表达式,数据类型转换 当表达式中出现多种数据类型的混合运算时,往往需要进行类型转换。表达式中的类型转换分成两种:1、隐式类型转换 2、强制类型转换。,2023/9/30,-96-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,隐式类型转换 各种二元运算符在进行运算时都要求两个操作数的数据类型一致。如果类型不一致,则系统自动对数据进行转换(隐式类型转换)。转换的基本原则:将精度较低、范围较小的类型转换成精度较高、范围较大的类型。char short int long float double,2023/9/30,-97-,北京邮电大学信息与通信工程学院,隐式类型转换例2-8 数据类型的自动转换。#include using namespace std;void main()char ch=a;int i=100;double d=123.09;coutch+iendl;/自动转换为int型 coutch+i+dendl;/自动转换为double型,运行结果:197 320.09,2.4 运算符和表达式,提示:在转换过程中不会造成数据精度的丢失。,2023/9/30,-98-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,隐式类型转换 对于同一种精度的无符号数和有符号数,在进行算术运算中,有符号数向着无符号数方向进行隐式类型转换:signed unsigned。例如:int a=100;unsigned int i=99;couti-aendl;,2023/9/30,-99-,思考:如果将unsigned int i=99;改为unsigned short i=99;结果如何?,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,隐式类型转换 逻辑运算符要求参与运算的操作数为bool类型,如果是其他类型,则系统自动将其转换成bool类型。转换规则:0为false,非0为true。赋值运算符要求“=”左右两边的操作数数据类型相同,如果类型不一致,则自动将右边的操作数类型向着左边的操作数类型转换。例如:int i=3.15;coutiendl;,2023/9/30,-100-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,C风格的强制类型转换 语法格式为:(数据类型名)表达式 或:数据类型名(表达式)例如:int i=97;cout(char)iendl;float f=3.75;cout(int)fendl;,2023/9/30,-101-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,C+的强制类型转换符 语法格式为:static_cast(表达式)例如:int i=97;cout(i)(f)endl;,2023/9/30,-102-,北京邮电大学信息与通信工程学院,2.4 运算符和表达式,强制类型转换 几点说明:如果强制由高精度的数据类型转换至低精度的数据类型,数据精度将受到损失,从这个意义上说,强制类型转换是一种不安全的类型转换。基本数据类型之间的强制转换都是允许的,但当遇到不允许的类型转换时,用C风格的类型转换,编译时不会报错;而用static_cast,在编译时就会报错。,2023/9/30,-103-,建议:在C+编程时要用static_cast进行强制类型转换。,北京邮电大学信息与通信工程学院,2.5 基本输入输出,2023/9/30,-104-,北京邮电大学信息与通信工程学院,2.5 基本输入输出,在iostream库中包含有一个标准输入流对象cin和一个标准输出流对象cout,分别用来实现从键盘读取数据,以及将数据在屏幕输出。另外,还可以定义文件流对象,实现文件的读/写操作 1、标准输入流cin 2、标准输出流cout 3、I/O流的格式控制 4、文件的输入输出,2023/9/30,-105-,北京邮电大学信息与通信工程学院,2.5 基本输入输出,标准输入流cin cin负责从键盘读取数据,使用提取操作符“”就可以将键盘键入的数据读入到变量中。语法格式为:cin变量1变量2变量n;例如:int a,b;char ch;cinabch;,2023/9/30,-106-,北京邮电大学信息与通信工程学院,2.5 基本输入输出,例2-9:计算从键盘输入的若干个整数的和。#includeusing namespace std;void main()int sum=0,value;while(cinvalue)/如果能从cin提取数值,sum+=value;/则cin的值为真,执行循环 coutsum is:sumendl;,运行结果:1 2 3 4 5 z/键盘输入 sumis:15,2023/9/30,-107-,北京邮电大学信息与通信工程学院,2.5 基本输入输出,标准输出流cout cout负责将变量或常量中的数据输出到屏幕,使用插入操作符“”就可以将变量或常量的数据显示在屏幕上。cout能够自动识别“”后面的数据类型并进行显示,并且可以从左到右一次显示多个变量。例如:cout”Hello world!n”;,2023/9/30,-108-,北京邮电大学信息与通信工程学院,2.5 基本输入输出,例2-10:cout的使用#include using namespace std;void main()int a,b;char ch;coutabch;cout”a=”a”b=”b”ch=”chendl;,运行结果:请按顺序输入两个整数和一个字符:1 2 a/键盘输入 a=1 b=2 ch=a/屏幕输出,2023/9/30,-109-,北京邮电大学信息与通信工程学院,2.5 基本输入输出,IO流的格式控制 库文件:iomanip 常用操纵符:setfill(c)设置填充字符 setw(n)设置域宽为n setiosflags(ios:left)设置数据输出左对齐 setiosflags(ios:right)设置数据输出右对齐,2023/9/30,-110-,注意:用cout输出数据默认的对齐方式是右对齐。,北京邮电大学信息与通信工程学院,2.5 基本输入输出,IO流的格式控制 setw(n)设置域宽,即设置“”符号后面的数据占用的屏幕宽度。例如:coutsetw(8)asetw(8)bendl;,2023/9/30,-111-,北京邮电大学信息与通信工程学院,输出结果:_ _ _ _ _ _ _a_ _ _ _ _ _ _b,2.5 基本输入输出,IO流的格式控制setfill(c)设置填充字符,即“”符号后面的数据长度小于域宽时,使用什么字符进行填充。例如:coutsetfill(*)setw

    注意事项

    本文(C++高级语言程序设计第二章.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开