C++课件完整版本_第1页
C++课件完整版本_第2页
C++课件完整版本_第3页
C++课件完整版本_第4页
C++课件完整版本_第5页
已阅读5页,还剩111页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机程序设计基础第2章编程基础

计算机编程语言及其发展C++语言简介

C++程序的基本框架C++的基本数据类型常量、变量的定义及使用方法C++的基本运算符及表达式数据类型的转换主要内容3要利用计算机完成某项任务,必须使用计算机能够理解的语言,称之为计算机语言1.计算机编程语言及其发展4最初的计算机编程语言是机器语言,即由计算机硬件系统可以识别的二进制指令组成的语言,也称为第一代语言。用机器语言编写的程序代码中只包含由0和1组成的机器指令。机器语言5

示例01000011011000000011011100010010110001100000111011100111100100111000001110000011100100010001106汇编语言

为了提高编程效率,人们引入了助记符,将机器指令映射为一些可以被人读懂的助记符,如ADD、SUB等,就出现了所谓的汇编语言,也称为第二代语言。汇编语言在运行之前,需要专门的翻译程序(称为assembler汇编程序)将其翻译为机器语言。7示例mainprocpay

movax,dsegmovdx,0b00h

addax,dxmoval,bl

mulbl,axmovbl,o4h8高级语言

为了进一步提高编程效率,改进程序的可读性、可维护性,又出现了许多高级语言,也称为第三代语言,例如:Fortran、Basic、Pascal、Java、C和C++等。高级语言比低级语言更加抽象、简洁:一条高级语言的指令相当于几条机器语言的指令。用高级语言编写的程序同英语非常接近,易于学习。用高级语言编写程序并不需要某种计算机的专门知识。同汇编语言类似,高级语言也需要专门的翻译程序(称为compiler编译器或interpreter解释器),将它翻译成机器语言后,才能运行。9示例#include<iostream>usingnamespacestd;voidmain(){doublea,b,c;cout<<"Pleaseinputtwonumber:";cin>>a>>b;c=a+b;cout<<a<<b<<endl;}2.C++语言简介在1983年,贝尔实验室的BjarneStroustrup在C语言的基础上,创建了C++语言,C++语言的ISO标准已在1997年11月被一致通过,1998年8月被正式批准。

C++是一门混合型的语言,既支持传统的结构化程序设计,又支持面向对象的程序设计。一个简单的C++程序//simple.cpp是一个简单的C++程序#include<iostream.h>voidmain(void){inti;cout<<“HelloC++!”;cout<<“请输入一个整数:”<<endl;cin>>i;cout<<"您输入的整数是:";cout<<i;cout<<endl;}3.C++程序结构程序解释

第1行是C++语言的注释,它是用来帮助阅读和理解程序的信息。其中,“//”是C++语言的一种注释符号,自“//”开始,一直到本行结束,所有内容都会被当作注释对待。C++注释也可以写成下面的形式:

/*注释内容*/

即夹在“/*”与“*/”号间的部分是要注释的内容。进行程序设计时,这两种注释形式都会经常用到。其区别在于:前者只能注释一行内容,而后者可以注释多行内容。注释可以用在程序的任何地方,编译器在编译时将这些注释信息忽略。//simple.cpp是一个简单的C++程序#include<iostream.h>voidmain(void){inti;cout<<“HelloC++!”;cout<<“请输入一个整数:”<<endl;cin>>i;cout<<"您输入的整数是:";cout<<i;cout<<endl;}

第2行使用预处理命令#include将头文件iostream.h包含到程序中来,iostream.h是标准的C++头文件,它包含了输入和输出的定义。其扩展名为.h,在#include命令中若省略头文件的扩展名,就必须在所有#include命令后添加using命令,即在程序第3行加入:usingnamespacestd;

程序解释//simple.cpp是一个简单的C++程序#include<iostream.h>voidmain(void){inti;cout<<“HelloC++!”;cout<<“请输入一个整数:”<<endl;cin>>i;cout<<"您输入的整数是:";cout<<i;cout<<endl;}程序解释usingnamespacestd;using命令,告诉C++编译器标准C++关键字的定义,如:cin、cout、endl等,位于名为std的命名空间,命名空间是一段特殊的计算机内存区域。std是standard的缩写。程序的预编译命令可以写成:

#include<iostream.h>

或#include<iostream>usingnamespacestd;注意#include预编译命令后不加分号。编译预处理预处理命令均以“#”号开头一行只能写一条预处理命令(过长的预处理命令使用续行标志“\”后续写在下一行上)结束时不使用语句结束符“;”C++程序一般至少包含一条预编译命令,大多数包含多条。//simple.cpp是一个简单的C++程序#include<iostream.h>voidmain(void){inti;cout<<“HelloC++!”;cout<<“请输入一个整数:”<<endl;cin>>i;cout<<"您输入的整数是:";cout<<i;cout<<endl;}编译预处理命令#include包含指令文件包含命令格式有:#include<文件名>

(标准)

按标准方式搜索,文件位于C++系统目录的include子目录下。#include"文件名"

首先在当前目录中搜索,若没有,再按标准方式搜索。程序解释第3行定义了一个称为main的主函数。任何一个C++程序都有且只有一个主函数main(),它可以带参数。main函数的返回值有两种情况:无返回值(返回类型为void)及返回值为整型。

函数体用花括号{}括起来。描述一个函数所执行算法的过程称为函数定义。第4行是一个左花括号{,是main函数体开始的标记。//simple.cpp是一个简单的C++程序#include<iostream.h>voidmain(void){inti;cout<<“HelloC++!”;cout<<“请输入一个整数:”<<endl;cin>>i;cout<<"您输入的整数是:";cout<<i;cout<<endl;}程序解释第5行是一个语句。一个语句可能是定义或声明一个变量,也可能是得到一个数值的计算步骤。一个语句用分号;结尾inta;该语句定义了一个整型变量i。一个变量能够保存一种特定类型的数据,整型变量能够保存一个整型数据。第6行也是一个语句。

这个语句将字符串“HelloC++!”发送到cout输出流。一个字符串是用双引号包围的字符系列。//simple.cpp是一个简单的C++程序#include<iostream.h>voidmain(void){inti;cout<<“HelloC++!”;cout<<“请输入一个整数:”<<endl;cin>>i;cout<<"您输入的整数是:";cout<<i;cout<<endl;}程序解释第7行也是一个语句。这个语句将字符串“请输入一个整数:”发送到cout输出流。

endl起换行的作用。第8行也是一个语句。

这个语句将cin输入流抽取到变量i。//simple.cpp是一个简单的C++程序#include<iostream.h>voidmain(void){inti;cout<<“HelloC++!”;cout<<“请输入一个整数:”<<endl;cin>>i;cout<<"您输入的整数是:";cout<<i;cout<<endl;}程序解释第9、10、11行分别是在屏幕上打印“您输入的整数是:”、变量i和换行。这三行实际上可以综合为一个语句:

cout<<“您输入的整数是:”

<<i<<endl;

它的效果与使用三个语句是一样的。第12行的花括号是main函数体结束的标记。//simple.cpp是一个简单的C++程序#include<iostream.h>voidmain(void){inti;cout<<“HelloC++!”;cout<<“请输入一个整数:”<<endl;cin>>i;cout<<"您输入的整数是:";cout<<i;cout<<endl;}C++语言程序的编写和运行

要想得到可以执行的C++程序,必须对C++源程序进行编译和连接。对于C++语言,这一过程的一般描述如下:使用文本编辑工具编写C++程序,其文件后缀为.cpp,这种形式的程序称为源代码(SourceCode)。然后用编译器将源代码转换成二进制形式,文件后缀为.obj,这种形式的程序称为目标代码(ObjectiveCode)。最后,将若干目标代码和现有的二进制代码库经过连接器连接,产生可执行代码(ExecutableCode),文件后缀为.exe。#include<iostream>usingnamespacestd;voidmain(){doublea,b,c;cout<<"Pleaseinputtwonumber:";cin>>a>>b;c=a+b;cout<<a<<b<<endl;}源文件.cpp编译器010010010101100100010000101000111010110110100111目标文件.obj100101101011000101101001001010010110110101101011其他目标文件/库链接器010010010101100100010000101000111010110110100111100101101011000101101001001010010110110101101011可执行文件.exe1.编辑程序2.编译程序3.链接程序C++语言程序的编写和运行VisualC++6.0开发环境简介C++的流行使得许多软件厂商都提供了自己的C++集成开发环境,称为C++IDE。著名的有Borland公司的C++Builder,IBM公司的VisualAgeForC++,Microsoft公司的VisualC++等等。

VisualC++6是美国微软公司开发的C++集成开发环境,它集源程序的编写、编译、连接、调试、运行,以及应用程序的文件管理于一体,是当前PC机上流行的C++程序开发环境。应用举例一般情况下,开发一个C++应用程序按照如下步骤来进行:创建一个项目;编辑项目中的源代码;为项目指定配置(Debug或Release);

Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。

Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。连编项目中的文件;纠正连编中出现的错误;运行可执行的文件。应用举例

C++中开发的应用程序叫做项目(Project),项目文件名后缀为dsp。每个正在开发的项目需要一个活动的项目工作区(workspace),项目工作区文件的后缀名为dsw。创建一个项目的同时,也创建了一个项目工作区,VisualC++6的集成开发环境中,通过“File”菜单的“New”命令创建一个新的项目。工作区包含了一个或多个项目在开发过程中所包括的全部内容,保存着关于一个或多个应用项目文件的编辑、编译、调试、版本、系统界面设置等全面信息,构成一个概念上十分完整的开发空间。

逻辑错误:产生的原因很多,比如误拼关键字或变量名数学公式的写法错误、漏写语句或语句顺序错误等时产生。程序并无违背语法规则,但程序执行结果与原意不符。运行错误:程序既无语法错误,也无逻辑错误,但在运行程序时出现错误甚至停止运行。通过提示信息,改正语法错误。逻辑错误、运行错误较难更正,需多方面考虑,不断的积累、提高。简单的调式技能计算机语言的基本体系结构2.计算机语言的基本体系结构自然语言的基本体系结构字符词汇短语句子段落描写文章基本符号常量、变量、运算符等表达式语句函数类、包程序2.1C++的字符集P26ASCII码字符集是计算机中的常用字符集。它包括英文字母及阿拉伯数字等128个字符,存储一个ASCII码占用一个字节单元。汉字国标码用于汉字处理。国标码的存储占用两个字节单元。Unicode字符集对各类字符进行统一的双字节编码。它包括了世界上多种语言的基本字符,最多可容纳65536个字符。ASCII码字符集,国标码字符集都是它的子集。常用字符集C++的字符集26个小写字母

abcdefghijklmnopqrstuvwxyz26个大写字母

ABCDEFGHIJKLMNOPQRSTUVWXYZ10个阿拉伯数字

0123456789其他符号

+-*/=,._:;?\"'~|!#%&()[]{}^<>空格C++语言基本字符2.2标识符和关键字P282.2.1标识符

标识符是一个字符序列,用来标识变量、函数、数据类型等。标识符可以由大写字母、小写字母、下划线(_)和数字0~9组成,但必须是以大写字母、小写字母或下划线(_)开头。在C++语言程序中,大写字母和小写字母不能混用(即区分大小写,大小写敏感)。标识符的命名规则所有标识符必须由一个字母(a~z或A~Z)或下划线(_)开头;标识符的其它部分可以用字母、下划线或数字(0~9)组成;

大小写字母表示不同意义,即代表不同的标识符,如前面的cout和Cout。

在定义标识符时,虽然语法上允许用下划线开头,但是最好避免定义用下划线开头的标识符,因为编译器常定义一些下划线开头的标识符。一个写得好的程序,标识符应该尽量有意义。比如表示年可以用year,表示长度可以用length,表示累加和可以用sum等,这样的标识符本身就增加了程序的可读性,使程序更加清晰易懂。

示例判断下面哪些是合法的标识符:

MyFileSalary94amountvoid94SalarySalary94$amountf3.5Num_of_Student2.2.2关键字

在C++中,有一些预定义的标识符,称之为关键字,也称之为保留字。关键字是一种特殊的标识符。具有特定的含义,不能对它们再定义。标准C++中预定义了63个关键字。另外,有些标识符虽然不是关键字,但C++语言总是以固定的形式用于专门的地方,也不能把它们当作一般标识符使用,以免造成混乱。这样的标识符有void、include、define等。C++关键字asmdeletefriendprotectedthisvoidautodogotopublicthrowvolatilebooldoubleifregistertruewhilebreakelseinlinereturntry.caseenumintshorttypedef..catchexplicitlongsignedtypeid..charexportmutablesizeoftypenameclassexternnamespacestaticunionconstfalsenewstructunsignedcontinuefloatoperatorswitchusingdefaultforprivatetemplatevirtual2.3基本数据类型P282.3.1数据数据是用来表示客观事物的符号,是指能够由计算机处理的数字、字母、符号、声音、图象、影视信息等,是程序的必要组成部分和程序处理的对象。数据有许多形式,如数值数据、文字数据、图象数据以及声音数据等,但其中最基本的、也是最常用的是数值数据和文字数据。

计算机在处理数据时要先将其存放在内存中,数据在内存中存放的格式称为数据类型。

不同类型的数据占据不同长度的存储单元,不同类型的数据对应不同的取值范围,不同类型的数据对应不同的操作(运算)及规则。2.3.2数据类型C++的数据类型

数组类型

array[]

指针类型type*

空类型void

枚举类型enum

结构类型struct

联合类型union

类类型class数据类型整型intshortlong字符型char(属于1字节的整型)

单精度浮点型float实型双精度浮点型double

长双精度浮点型longdouble布尔逻辑型bool基本数据类型非基本数据类型

C++的数据类型有基本数据类型和非基本数据类型之分。基本数据类型是C++内部预先定义的数据类型,也称为内置数据类型。非基本数据类型包括指针、数组和结构以及类类型等。

C++中所有数据的使用严格遵从“先声明,后使用”的原则。要求程序设计者在使用数据之前对数据的类型进行声明,即告诉计算机需要存储的是一个什么类型的数据。数据类型是数据在内存中存放的格式。如,inta;

数据类型

整型用来存放整数,整数占用的字节数与机型有关,32位机上占用4个字节。

基本数据类型字符型用来保存字符,存储的是该字符的ASCII码,占用一个字节。例如字符A的ASCII码为65,字符a的ASCII码为97。字符型数据从本质上说也是整数,可以是任何一个8位二进制整数。基本数据类型

实型

单精度(float)和双精度型(double)都用来存放实数,两者表示的实数精度不同。float类型是4字节的浮点数。double是8字节的浮点数,double类型是浮点数的缺省类型。

逻辑型也称布尔型,其取值为true和false。布尔型在运算中可以和整型相互转化,false对应为0,true对应为1或非0。

除上述基本数据类型外,还有一些类型修饰符,它用来改变基本类型的意义。

修饰符有short(短型符)、1ong(长型符)、signed(有符号)和unsigned(无符号)。short只修饰int,shortint可省略为shortlong修饰int和double,1ongint可省略为1ong,一般表示4个字节,修饰longdouble时,一般表示8或10个字节。unsined和signed能修饰char,short,int和long。

数据类型

示例-215~215-1…符号位15个数据位2个字节…16个数据位2个字节0~216-1

类型名type

说明长度

数据范围bool布尔逻辑型1true(1)false(0)char字符型l-128~127(0~255)unsignedchar无符号字符型10~255signedchar有符号字符型1-128~127[signed]short[int]有符号短整型2-32768~32767unsignedshort[int]无符号短整型20~65535[signed]int有符号整型2/4-32768~32767unsigned[int]无符号整型2/40~65535[signed]long[int]有符号长整型4-2147483648~2147483647unsignedlong[int]无符号长型型40~4294967295float浮点型43.4*10e-38~~3.4*10e38double双精度型81.7*10e-308~~1.7*10e308longdouble长双精度型8/10至少与double类型同2.4变量变量,在程序中是指可以改变值的量;变量必须用标识符进行标识,称为变量名;变量有类型之分,如整形变量、字符变量等;类型决定了变量的取值范围和合法运算;任何变量都必须先声明后使用;一是便于编译程序为变量分配空间,二是便于编译时进行语法检查;变量使用的第一步,是给变量赋一个确定的值(初始值)。1.变量定义P29

在C++中,变量定义的一般格式为:数据类型变量名1[=初始值1],变量名2[=初始值2],...;数据类型可以是C++数据类型中的任意一种。例:inti,j,k; //定义三个整型变量i,j,kfloatx,y,z;//定义三个单精度实型变量x,y,zcharc1,c2;//定义两个字符型变量c1,c2doubledx; //定义一个双精度型变量dx2.变量初始化P29

定义变量时即给变量一个值称为变量初始化。例如: inta=3,b=4,c=5; floatx=3.0; 变量初始化可避免引用到无意义的值。如果在定义变量时没有对变量进行未初始化,则变量使用的第一步就是给变量赋一个确定的值。变量定义格式小结语法示例初值1.数据类型变量名=初值;2.数据类型变量名(初值);3.数据类型变量名1,变量名2,…变量名n;变量名1=初值;变量名2=初值;...变量名n=初值;intage=0;0floatrate=0.0;floatrate(0.0);doublecost=0.0;0.0chargrade=‘’;一个空格inta,b,c;a=1;b=3;c=4;C++中,如果定义变量时没有进行初始化,则系统分别初始化int、float、char和string变量为0,0.0,‘’(空格),“”(空串)。变量必须具有有效值后才可参与运算。如inta,b;a=b+1;//b无有效值,出错。关于变量的几点说明

常量是指在程序执行中不变的量,它分为字面常量和符号常量(又称标识符常量)两种表示方法。如25,-3.26,’a’,“constant”等都是字面常量,即字面本身就是它的值。符号常量是一个标识符,对应着一个存储空间,该空间中保存的数据就是该符号常量的值,这个数据是在定义符号常量时赋予的,以后不能改变。2.5常量P252.5.1符号常量C++定义符号常量的一般形式为:

const类型名字=值;

其中,“类型”是指常量的数据类型,如short,long、double等,"名字"是指常量的名字,而"值"是指赋给常量的、合适的数据类型的数值。constdoublePI=3.1415927;//圆周率π

constintnumber=49;

constcharTAB='\t';

constcharQUERY='?';

constdoubleSOMENUM=1.235E75;符号常量符号常量必须先声明后使用;符号常量必须在声明时进行初始化;符号常量初始化之后,不允许再被赋值;符号常量对应着一个存储空间,可以按地址访问,编译时系统对符号常量进行类型检查。C++建议使用符号常量,而不要使用字面常量。2.5.2C++中的字面常量P25整型常量实型常量字符型常量布尔型常量字符串型常量整型常量

整型常量即以文字形式出现的整数,包括正整数、负整数和零。正整数前面的“+”可以省略,但负整数前面的“-”不可省略。表现形式有十进制、八进制和十六进制。表示方法为:

十进制整型常量:无前缀,数码为0至9。如:15,235,0

八进制整型常量:前缀为0,数码为0至7。如:07,0327,-02十六进制整型常量:前缀为0X或0x,数码为0至9,A至F或a至f。如:-0x7,0X5bf整型常量注意:长整型常量的表示方法是加后缀字母l或L,如:712l,0x5fL。无符号型整型常量的表示方法是加后缀字母u或U,如:712u,0x5fU。实型常量(浮点数或实型常数)

实型常量即以文字形式出现的实数,C++中的实数只允许使用十进制,它可以有两种表示形式:

1、一般形式

由正负号、数字和小数点组成,必须有一个且仅有一个小数点。如0.00.123.123123.0123.-0.123等。2、指数形式尾数e或E指数e或E前后必须有数字,可以带“+”或“-”号;e后面的指数必须为整数。在尾数部分,若小数点左边为一位非零数,则称为“规范化的指数形式”,系统输出时均按规范化的指数形式输出。实型常量(浮点数或实型常数)

如:325.123可表示为3251.23E-1、325.123E0、32.5123E1、3.25123E2、0.325123E3等,系统在用指数形式输出时,输出规范化的指数形式3.25123E2。字符常量对于数字、字母、标点符号等可见字符使用一对单引号将字符括起。如:‘A’、‘a’、‘$’、‘!’、‘?’、‘5’c++还允许使用一种特殊形式的字符常量,即以“\”开头的字符序列,称为转义字符,是将反斜线后面的字符转变成另外的意义。转义字符'\n'//换行'\''//单引号(')'\r'//回车'\"'//双引号(")'\t'//水平tab'\\'//反斜杠(\)'\v'//垂直tab'\0ddd'//三位八进制数'\b'//退格'\xhh'//两位十六进制数'\f'//进纸字符串常量

字符串常量是用双引号(定界符)括起来的一串字符,如“”、“A”、“12.42”、“Program”。C++中字符串常量在内存中存储时用字符数组存放,系统将自动在其尾部追加一个‘\0’字符作为结束字符。Program\0

因此,长度为n个字符的字符串常量,在内存中占用n+1个字节。注意字符与字符串不等价。例如:“A”与’A’,前者由两个字节组成(字符’A’与字符’\0’),而后者只有一个字节。最短的字符串是空字符串(“”),它仅由一个结尾符’\0’组成。C++中,没有字符串类型,而是用字符数组来处理字符串,布尔型常量

布尔型常量的取值只有两个:false(假)、true(真)2.6运算符与表达式

P34

所谓运算符就是指运算的符号,例如加运算符(+)、乘运算符(*)、取地址运算符(&)等。

表达式与运算符密不可分,它由运算符与操作数组合而成,并由运算符指定对操作数所进行的运算,一个表达式的运算结果是一个值。2.6.1C++运算符P34C++提供的运算符按其功能分为:算术运算符、关系运算符、逻辑运算符、位运算符、条件运算符、赋值运算符、逗号运算符及其它运算符。不同的运算符,需要指定的操作数的个数并不相同。根据运算符需要的操作数的个数,可将其分为三种:单目运算符(1个操作数)、双目运算符(2个个操作数)和三目运算符(3个操作数)。

2.6.1C++运算符操作数运算符操作数双目运算符(二元运算符)操作数运算符操作数运算符操作数运算符操作数三目运算符(三元运算符)例如:a+5例如:-2、!0例如:x>y?1:0

运算符

操作数

单目运算符(一元运算符)运算符的优先级和结合性P34结合性

当一个操作数左右两边的运算符优先级相同时,按什么样的顺序运算,是自左向右还是自右向左。自左向右称为左结合,自右向左称为右结合。大多数C++运算符都是采用左结合方式。优先级当一个表达式中出现多个运算符时,先进行优先级高的运算,再进行优先级低的运算。单目运算符的优先级高于双目运算符。基本算术运算符算术运算符运算优先级别()改变正常优先级1-负号(单目运算符)2*,/,%乘法、除法、求余3+,-加、减法(双目运算符)4模运算符:%

%只能对整型数进行操作,其操作意义为取余,%不允许对浮点数操作。例如:5%3=21%5=125.7%3是非法的/对于整型数则为除法取整操作。/对于浮点数则为通常意义的除法。例如:5/2=25.0/2.0=2.5说明运用举例1、inta=5,b=2;

floatc=5.0,d=2.0;求a/b、a%b、c/d、a+a%b/b、a%d。解:

a/b=2、a%b=1、c/d=2.5、

a+a%b/b=5、a%d非法1/ba+05运用举例2、已知inta=3467,写出计算其个、十、百、千位的表达式。解:a%10,a/10%10,a/100%10,a/1000%10或a/10003、如下的表达式是否正确?①(x+y)(x-y)②5x+1增量和减量运算符P37增量++、减量运算符--(单目运算符)作用:使变量的值增加1或减少1表示:前置运算

++i或--i先修改操作数使之增(减)1,然后将增(减)1过的i值作为表达式的值。后置运算

i++或i--

先将变量i的值作为表达式的值确定下来,再将i增(减)1。++、--只能用于变量,不能用于常量。示例inti=5,j=5,m,n;m=i++;//后置;相当于m=i;i=i+1;//结果:i的值为6,m的值为5;n=++j;//前置;相当于j=j+1;n=j;

//结果:j的值为6,n的值为6;示例已知:inta=8,b=10;写出顺次执行

c=--a;

d=b--;

e=a--;

f=--b;a至f的值。

解:a、b、c、d、e、f的值为6、8、7、10、7、8#include<iostream>usingnamespacestd;voidmain(){inta,b;inti,j;i=10;j=20;cout<<"i_old="<<i<<",j_old="<<j<<endl;a=2+(++i);/*2+++i是错误的*/b=2+j++;cout<<"a="<<a<<",b="<<b<<endl;cout<<"i_new="<<i<<",j_new="<<j<<endl;}i_old=10,j_old=20a=13b=22i_new=11i_new=212.6.2赋值运算符与赋值表达式P36

赋值运算符=语法示例变量名=表达式;

hours=10;age=age+1;bonus=sales*RATE;name=“Jack”;grade=‘A’;赋值运算符与赋值表达式作用:将右边表达式的值赋给操作符左边的变量。表达式的数据类型必须和要赋值变量的数据类型匹配,否则系统将进行隐式类型转换(参见下节),编译时出现警告信息。在程序运行过程中改变变量的值,可以使用赋值语句。符号常量的值在程序运行期间不能改变,因此不能用赋值语句给符号常量赋值。例如:constPI=3.1415;PI=2;//error变量每次只能存储一个值,当另一个值赋给该变量后,新值会取代原有的值。例如:a=5;a=a+1;

变量a中的值为6赋值运算符与赋值表达式注意区分赋值语句和变量定义语句例如:age=18;intage=18;

变量定义语句用于创建和初始化变量,必须以某种数据类型开头,定义变量意味着给变量分配内存空间;赋值语句用于修改已经存在的变量的值,不再在内存中创建变量。赋值运算符与赋值表达式2、复合的赋值运算符

在赋值符“=”之前加上其它运算符,可以构成复合的运算符。共有10种复合运算符,其结合性为从右至左。+=(加赋值),-=(减赋值),*=(乘赋值),/=(除赋值),%=(取余赋值),&=(按位与赋值),^=(按位异或赋值),|=(按位或赋值),<<=(按位左移赋值),>>=(按位右移赋值)。(参见“选读”内容)例:a+=3等价于a=a+3

x*=y+8等价于x=x*(y+8)示例1、已知inta=12;求执行a+=a-=a*a后a的值。2、若有定义:intm=5,y=2;则执行表达式y+=y-=m*=y后,y的值。a=a-a*a=-132a=a+a=-264m=m*y=5*2=10y=y-m=2-10=-8y=y+y=-16复合赋值运算符的结合性为从右至左2.6.3关系运算符与关系表达式P53运算符运算优先级<<=>>=小于小于等于大于大于等于1111==!=等于不等于22关系运算符与关系表达式关系运算符两字符之间不能加空格,例如,>=。关系运算即比较运算,将两个值进行比较,判断比较的结果是否符合给定的条件。关系运算的结果为逻辑值:若满足条件,关系表达式的值为真true(1);若不满足条件,关系表达式的值为假false(0)。关系运算符与关系表达式注意==与=的区别例如:x==1为关系表达式,判断x是否等于1;x=1为赋值表达式。优先级算术运算符关系运算符赋值运算符低高运用举例1.若A=3,B=2,C=1,求下列表达式的值。

A>B(A>B)==CB+C<AD=A>BF=A>B>C//即3>2,值为1//即(3>2)==1,1==1为真,值为1//即3<3为假,值为0//即3>2为真,则D的值为1//即3>2为真,1>1为假,F的值为02.6.4逻辑运算符与逻辑表达式P54C++提供了三种逻辑运算符!非(单目逻辑运算符)&&与(双目逻辑运算符)||或(双目逻辑运算符)优先级高低逻辑运算真值表AB!AA&&BA||Btrue(1)true(1)false(0)true(1)true(1)true(1)false(0)false(0)false(0)true(1)false(0)true(1)true(1)false(0)true(1)false(0)false(0)true(1)false(0)false(0)逻辑运算符与逻辑表达式逻辑运算符也称布尔运算符逻辑表达式:由逻辑运算符连接表达式构成,结果类型为bool,值为true或false原则上,逻辑运算符的操作数应为bool型数据,但同时允许是数值型数据,此时,0等价于false,非0等价于true。高低优先级

!算术运算符关系运算符

&&||赋值运算符

运用举例1、若A=5,B=0,求下列各表达式的值。

!A

B&&A!B<2||5&&5<=5/*A为5,5为非零即为真(1),所以!1结果为0。*///B为0,所以值为0。//值为1。分析:3+1的值为4,2>1&&4&&7<42>1为true7<4为falsetrue&&4&&为false最终表达式的值为false2、计算表达式2>1&&4&&7<3+1的值。已知:

inta=10,b=20,c=30;floatx=1.8,y=2.4;a<b&&x>y||a<b-!c按优先级与结合性,其求值顺序等同于:(a<b)&&(x>y)||(a<(b-(!c)))t1=1t2=0t4=0-&&t3=0t5=b<t6=1||

得整个表达式的值为:①②③⑥④⑤⑦1运用举例4、写出满足成绩x在90分以上(含90)或60分以下(不含60)的表达式。

解:x>=90||x<603、写出满足成绩x在60分以上(含60)且80分以下(不含80)的表达式。

解:x>=60&&x<805、写出判断一个年份是否闰年的表达式①能被4整除,但不能被100整除的年份都是闰年;②能被100整除,又能被400整除的年份是闰年。(X%4==0)&&(X%100!=0)||(X%100==0)&&(X%400==0)2.6.5逗号运算符和逗号表达式P38格式表达式1,表达式2,表达式3……表达式n求解顺序及结果先求表达式1,再求表达式2,…最后求解表达式n,整个表达式的值为表达式n的值。例如:

a=3*5,a*4;

a的值为15,整个表达式的值为60逗号运算符是所有运算符中优先级别最低的。使用逗号表达式的目的一般只是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达式的值。逗号表达式最常用于循环语句(for语句)中,详见后续章节。逗号运算符和逗号表达式2.6.6条件运算符与条件表达式P56条件运算符:?:条件表达式的一般形式表达式1?表达式2:表达式3表达式1的结果必须是bool类型执行顺序表达式1取表达式2的值取表达式3的值true(非0)False(0)条件运算符优先级高于赋值运算符,低于逻辑运算符。结合方向为自右至左。表达式2、3的类型可以不同,条件表达式的最终类型为2和3中较高的类型。说明运用举例1、intx=4;inty=3;intm=0,n=0;求m=x>y?x:y;n=x<y?x:y;解:先求解x>y,即4>3为真,所以m的值为x的值4

先求解x<y,即4<3为假,所以n的值为y的值3运用举例2、若有变量定义:inta=1,b=2,c=3,d=4;求表达式:a>b?a:c>d?c:d的值。解:条件运算符的结合方向为自右至左,所以先求解c>d?c:d的值为d,再求解a>b?a:d的值为d,所以表达式值为4。2.6.7多种运算符混合运算

当多种运算符存在于同一表达式时,需考虑运算符的结合性和优先级,C++大多数运算符的结合性是从左至右,只有单目运算符(!~+-++--&*等)、条件运算符、赋值运算符的结合性是从右至左。C++运算符的优先级和结合性,请参阅书P232附录Ⅳ

C++遇到两种不同数据类型的数值进行运算时,会将两个数做适当的类型转换,然后再进行运算。2.7数据类型转换

字符型数据在内存中的存储是其ASCII码,与整数的存储形式相同,如65和‘A’的存储形式均为1000001,二者可进行运算、相互赋值。因此一个字符型数据既可以以字符形式输出,也可以以整数形式输出。2.7.1字符型数据的类型转换P39字符型数据以字符形式输出时,首先将ASCII码转换成相应字符。字符型数据以整数形式输出时,直接将ASCII码作为整数输出。字符型数据的类型转换示例#include<iostream.h>

voidmain()

{

charc1=97;

charc2='b';

charc3,c4;

c3=c1-('a'-'A');

c4=c2-('a'-'A');

cout<<c3<<c4<<endl;

cout<<(int)c3<<(int)c4<<endl;

}AB6566

数据运算过程中自动进行的类型转换称为隐式类型转换。

转换总是朝表达数据能力更强的方向,并且转换总是逐个运算符进行的。2.7.2自动类型转换charshortintlongintunsignedcharunsignedshortunsignedintunsignedlongfloatdoublelongdouble示例floatf=3.5;intn=6;longk=21;doubless=f*n+k/2;计算ss时,首先将f和n转换成double型,得到21,然后计算k/2得10,再将longint型的值10转换成double型数值。最后将21和10相加得到31(double)。#include<iostream.h>voidmain(){

inta1=10,a2=5,k;doubleb=38.425,c=12.0,s;charc1=‘A’,c2=‘B’;s=b+a1-c;

/*此处整型a1转换成double型参加运算*/k=c1+c2+a1+b;

/*此处c1、c2的ASCII码值参加运算,c1+c2+a1+b的结果为double型,转换为整型赋给k,编译产生报警“conversionfrom‘double’to‘int’,possiblelossofdata”*/cout<<k<<“,”<<s<<endl;

cout<<c1+1<<endl;cout<<char(c1+1)<<endl;}示例179,36.42566B

强制类型转换又称显示类型转换,就是将数据显式地从一种类型转换成另一种类型。其语法是在一个数值或表达式前加上带括号的类型名,也可以类型名后跟带括号的数值或表达式。

(数据类型)表达式数据类型(表达式)

2.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论