版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C++程序设计基础第2章基本数据类型与表达式北京邮电大学信通院方莉mrs.fangli@
程序中最基本的元素是数据类型,根据数据类型可以为变量或常量分配内存空间,将变量、常量和运算符结合在一起组成表达式,进行复杂的运算和处理。第2章基本数据类型与表达式2编辑ppt主要内容如何定义和使用变量和常量?如何使用表达式?如何使用输入和输出流?如何使用string类型处理字符串?第2章基本数据类型与表达式3编辑ppt第2章基本数据类型与表达式2.1词法记号和标识符1
2.2基本数据类型22.3变量和常量32.4运算符和表达式4
2.5基本输入输出52.6使用string类型处理字符串64编辑ppt2.1词法记号和标识符1、C++字符集2、C++关键字3、标识符4、分隔符5、空白5编辑ppt2.1词法记号和标识符1、C++字符集英文字母:A~Z,a~z数字字符:0~9特殊字符:+-*/%^=<>!#& |_~ \‘
“;. ,()[] {}空格6编辑ppt2.1词法记号和标识符2、C++关键字1)什么是关键字?预先定义好的标识符,C++编译器对其进行特殊处理。auto,bool,break,case,catch,char,class,const,continue,default,delete,do,…..,while(P11-12)2)如何识别关键字?使用VC++6.0(VC2005)的编辑环境时,缺省是蓝色的字符即为关键字。7编辑ppt2.1词法记号和标识符3、标识符标识符是程序员声明的单词,它命名程序正文中的一些实体,如函数名、变量名、类名、对象名等。C++标识符的构成规则如下:
1、不能是C++的关键字;2、第一个字符必须是大写、小写字母或下划线;3、不包含空格和“+、-、;”等特殊字符;4、为方便输入,长度一般不超过31个字符。8编辑ppt2.1词法记号和标识符例如:合法的标识符:
apple、_Student、_123、No1、max_num
不合法的标识符:
51job、max
num、-abcC++的表示符是大小写敏感的,即abc≠ABC。9编辑ppt2.1词法记号和标识符4、分隔符分隔符用于分隔程序中的正文,在C++中使用下列字符作为分隔符:
(){} , : ;这些分隔符不表示实际的操作,仅用于构造程序。比如“;”,用来作为一句完整语句的结束。10编辑ppt2.1词法记号和标识符5、空白在C++语句中经常出现空白(制表符、空格、空行)等,通常都忽略不计。例如:x=a+b;也可写成:x=a+b;或x=a+b;合法但不直观,缺乏可读性使用空格要适当11编辑ppt第2章基本数据类型与表达式2.1词法记号和标识符1
2.2基本数据类型22.3变量和常量32.4运算符和表达式4
2.5基本输入输出52.6使用string类型处理字符串612编辑ppt2.2基本数据类型什么是数据类型?数据是程序处理的对象,根据数据本身的特点进行分类,从而形成不同的数据类型。
例如:数学中有自然数、整数、实数不同类型的数据有不同的表示和处理方法,具有不同运算规则。13编辑ppt2.2基本数据类型基本数据类型整型:int字符型:char、wchar_t实型:float、double逻辑型:bool14编辑ppt2.2基本数据类型自定义数据类型数组:type[]指针:type*引用:type&空类型:void结构:struct联合:union枚举:enum类:class15编辑ppt2.2基本数据类型修饰符在C++中描述为了更加准确的描述数据类型,提供了4个关键字用来修饰基本数据类型:1、长型long2、短型short3、有符号signed4、无符号unsigned16编辑ppt1、short: 仅用来修饰int,称为短整型,占2字节内存,也可直接简写为short;2、long:仅修饰int和double,因为在不同的编译环境中使用long修饰的数据所占内存不同,这里列出的是在VC++6.0(vc2005)的环境下的。3、unsigned:用来修饰char、short和int,表示该数据类型为无符号数。4、signed:用来修饰char、short和int,表示该数据类型为有符号数,为缺省设置。2.2基本数据类型17编辑ppt2.2基本数据类型数据类型与内存空间不同的数据类型,加上不同的修饰符就具有了不同的特点,在内存中占用的空间也不同,因而其所能表示的数值范围也不尽相同。内存单元的单位是字节,因此用来表示数据类型的长度的单位也是字节。18编辑ppt2.2基本数据类型注意特定数据类型在内存中占用的内存因机器的不同而不同。整型int的长度等于机器的字长:16位机:int=2字节;32位机:int=4字节。但是short和long表示的数据长度是固定的,任何支持标准C++的编译器都是如此,因而如果需要编写可移植性好的程序,应将整型声明为short或long。19编辑ppt
2.2基本数据类型数据类型字宽取值范围说明char(signedchar)1-128~127有符号字符unsignedchar10~255无符号字符shortint2-215~215-1短整型unsignedshortint20~216-1无符号短整型20编辑ppt
2.2基本数据类型数据类型字宽取值范围说明int(signedint)4-231~231-1整型unsignedint40~232-1无符号整型longint4-231~231-1长整型unsignedlongint40~232-1无符号长整型float4-3.4×1038~3.4×1038浮点型double8-1.7×10308~1.7×10308双精度型longdouble8-1.7×10308~1.7×10308长双精度型21编辑ppt例2.1:输出数据类型的长度例题编写一个程序,输出基本数据类型char,int,float,double,bool的长度,即所占字节数。提示:使用sizeof(数据类型)能够获取不同数据类型的长度。22编辑ppt//例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";}例2.1:输出数据类型的长度在32位机上运行结果char:1字节int:4字节float:4字节double:8字节bool:1字节23编辑ppt第2章基本数据类型与表达式2.1词法记号和标识符1
2.2基本数据类型22.3变量和常量32.4运算符和表达式4
2.5基本输入输出52.6使用string类型处理字符串624编辑ppt2.3变量和常量概述
程序所处理的数据不仅分为不同的数据类型,而且每种类型的数据还分为变量和常量。程序在运行中就是通过这些变量和常量来操作数据的。什么是变量?在C++中,变量是存储信息的地方。变量的实质是内存中的一个地址空间,在这个地址空间中可以进行数据的存储和读取。25编辑ppt变量定义的格式变量定义的格式:数据类型变量名1,变量名2,…变量名n;例如:定义各种类型的变量
intnum; floatf; charch; shorts; doublearea,length;26编辑ppt变量定义的格式
定义变量的实质
例如:intnum;
系统根据所指定的数据类型int,从地址xxxxxxxH开始,为变量num分配4个字节单元。变量num的取值范围为−231~231−1。27编辑ppt变量定义的格式
定义变量的实质
例如intnum;
编程时,可以直接使用变量名num对存储在该内存空间的数据,也就是变量值进行存取。
变量名和地址xxxxxxxH之间的对应关系由系统来管理。28编辑ppt变量定义的格式说明在创建或定义变量时,需要指明该变量的数据类型和名称。数据类型:决定变量的存储方式和可以进行的操作;变量名称:用来区分不同的变量。
例如:shortints; doublearea,length;变量一旦被定义,则系统自动为其分配应占的内存。29编辑ppt变量定义的格式说明在C++程序中使用变量,必须“先定义或声明,后使用”,而且只能定义一次。变量定义语句的位置,C++中没有要求,放在第一次使用该变量之前的任何位置均可以。建议:把变量定义语句放在首次使用它的地方,这样可以提高程序的可读性。30编辑ppt变量名称的定义变量名称的定义遵循标识符定义的规则,实际上变量名称就是一种标识符。常用的命名约定有三种:
1、Unix环境常用的命名法
my_age、num_of_student2、驼峰式命名法
myAge、numOfStudent3、匈牙利标记法
iMyCar、ipMyCar31编辑ppt给变量赋值赋值
使用赋值运算符“=”可以将一个值赋给变量。①先定义后赋值,②定义同时初始化
例如:unsignedshortage;age=18;
或者unsignedshortage=18;32编辑ppt给变量赋值可以一次定义多个相同数据类型的变量,也可以一次为多个变量初始化:
charch1=‘a’,ch2=‘b’;intheight=10,width=6,area;特性:变量可以被多次赋值,但每次赋值后,原值都会被新值覆盖。33编辑ppt例2.2:赋值运算符的使用
#include<iostream>usingnamespacestd;voidmain(){intmyAge=18;
cout<<"myAge="<<myAge<<endl;myAge=20;cout<<"myAge="<<myAge<<endl;
}运行结果:myAge=18myAge=2034编辑ppt2.3变量typedef
为已有的数据类型定义一个同义词,或者叫做别名。例如:
typedefunsignedintUINT;
关键字数据类型新类型名(别名赋值)
UINTi;注意:
使用typedef定义同义词时并不分配内存空间。35编辑ppt2.3常量严格来说,常量又分成符号常量和常数。符号常量:代表一个固定不变值的名字;常数:程序中使用的具体的数据。36编辑ppt2.3常量符号常量
C++中提供了一个关键字const,用来区分常量和变量。由于常量代表一个固定的值,并且该值在程序运行过程中不能够被改变,所以要求常量在定义的时候必须进行初始化。例如:
constfloatPI=3.1415;
关键字数据类型常量名=初始值;
constfloatPI;PI=3.14;X37编辑ppt2.3常量define关键字在C语言中使用预编译指令#define也能够定义常量。
例如:#definePI3.1415927关键字常量名值
该语句属于预编译指令,不属于C++语句,因而行尾不需要使用分号。并且由于C++是向下兼容的,因而C语言的程序能够在C++的编译器下顺利运行。但是在C++编程中,建议使用const替代#define定义常量。38编辑ppt2.3常量编程时使用符号常量
可以增强程序的可读性
可以增强程序的可维护性39编辑ppt整型常数整型常数:多进制十进制数:100(有符号)八进制数:0123(0-7),无符号整型数,(123)8=83十六进制数:0x123(0-9,A-F),无符号整型数,
(123)16=291用U或u表示无符号整型,如65535U。用L或l表示长整型,如123L。默认的是int型。40编辑ppt实型常数实型常数
小数形式例如:0.123、23.12
指数形式:
aEb=a10b例如:123e5或123E5=123×105实常数默认为double型可用后缀F(f)表示实数常数为float型。可用后缀L(l)表示实数常数为longdouble型。
注意:
b必须是十进制整数,a可以是十进制整数或者小数形式的实数,并且数字a和b都不可以省略41编辑ppt字符常数字符常数
1、用单引号扩起来的一个字符,例如:‘a’、‘?’。2、转义字符以\开头的字符序列,代表特殊的意义。例如:\n、\t、\”换行制表符双引号(P18)42编辑ppt字符形式ASCII码含义\a 0x07 bell(响铃)\n 0x0A 换行\r 0x0D 回车\t 0x09 制表符\v 0x0B 垂直跳格\b 0x08 Backspace\\ 0x5C ‘\’\" 0x22 双引号\’ 0x27 单引号\ooo1-3位8进数\xhh1-2位16进数字符常数43编辑ppt例2.3:打印特殊字符#include<iostream>usingnamespacestd;voidmain(){cout<<"输出字母:"<<'a'<<'\a'<<endl;cout<<"输出字母:"<<'n'<<'\n';}运行结果:
输出字母:a(蜂鸣器响一声)输出字母:n(换行)44编辑ppt2.3常量反斜杠还可以和八进制数或十六进制结合起来表示相应的ASCII码。表示形式如下:
\ooo:1~3位八进制数\xhh:1~2位十六进制数在十六进制的ASCII码表中,字母‘a’~‘z’的ASCII值是61H~7AH,因此也可以使用如下两句代码替代例2.3中的输出,达到同样的结果。cout<<"输出字母:"<<'\x61'<<'\x07'<<endl;cout<<"输出字母:"<<'\x6E'<<'\x0A';45编辑ppt2.3常量字符数据的存储
charch1=‘a’,ch2=97;
原因:
在内存中,字符数据以ASCII码存储,即以整数表示,所以,C++中字符数据和整数可以相互赋值。46编辑ppt例2.4:字符数据和整型数据的转换#include<iostream>usingnamespacestd;voidmain(){intn='a';charch=97;cout<<"输出内容:"<<n<<endl;cout<<"输出内容:"<<ch<<endl;}运行结果:输出内容:97输出内容:a注意:变量在输出时,根据其本身的数据类型进行输出。47编辑ppt字符串字符串常量
由一对双引号括起来的字符序列,例如:“howdoyoudo?”
“helloworld!”48编辑ppt字符串字符和字符串的区别1、字符常量和字符串常量是不同的,字符串常量以‘\0’结尾。例如:字符串Hello在内存中的形式:
2、“a”不等于‘a’,“a”占2个字节,‘a’占1个字节Hello\0a\0a49编辑ppt字符串字符串变量
chara[20]=“Helloworld\n”;charb[5]=“a”;
charc=‘a’;思考字符串“\x07Operating\tsystem”
显示结果如何?字符串“ab\\\n”在内存中占几个字节?
50编辑ppt2.3常量逻辑常数逻辑型常数只有两个:false(假)和true(真)。在显示器上显示为0和1。51编辑ppt第2章基本数据类型与表达式2.1词法记号和标识符1
2.2基本数据类型22.3变量和常量32.4运算符和表达式4
2.5基本输入输出52.6使用string类型处理字符串652编辑ppt2.4运算符和表达式1、表达式2、语句和块3、运算符赋值运算符、算术运算符、关系运算符、逻辑运算符、位运算符、条件运算符、逗号运算符53编辑ppt2.4运算符和表达式表达式变量、常量是存放数据的地方,那么在C++语言中这些数据是如何处理和计算的呢?在C++语言中将变量、常量和运算符有机结合在一起组成的就是表达式,利用表达式C++可以进行复杂的运算和处理。54编辑ppt例如: 3.2//简单表达式,值为3.2 2+3//常量表达式,值为5 a//简单表达式,值为变量a的值 x=(a+b)*c;//较为复杂的表达式
表达式是可以嵌套的,比如y=x=a+b,该表达式先将a和b进行相加,然后将结果赋值给x,再将x=a+b的值赋给y。2.4运算符和表达式55编辑ppt2.4运算符和表达式表达式定义: 表达式是运算符、操作数和标点符号组成的序列。
运算符:+-*/等
操作数:变量、常量、数组等
标点符号:空格、回车等
表达式总能返回一个值作为表达式的结果。56编辑ppt2.4运算符和表达式语句和块C++中所有的操作运算都通过表达式来实现。由表达式和结尾的“;”组成一个C++语句;多条C++语句通过大括号{}括起来,组成一个块语句,例如: {
inttemp=x; x=y; y=temp; }
一般来说属于同一个逻辑关系的多条语句组成块语句。57编辑ppt运算符运算符具有优先级和结合性:优先级:级别高的先运算,级别低的后运算。例如:*/高于+-结合性:自左向右结合还是自右向左结合。例如:1+2+3,+自左向右结合。58编辑ppt2.4运算符和表达式59编辑ppt2.4运算符和表达式运算符根据运算符对操作数的要求不同,分成:
一元运算符:仅需要一个操作数的运算符,例如++等
二元运算符:需要两个操作数的运算符,例如:+、-、*、/等,形如“操作数1运算符操作数2”三元运算符:需要三个操作数的运算符,只有条件运算符“?:”。60编辑ppt运算符运算符赋值运算符算术运算符关系运算符逻辑运算符位运算符条件运算符逗号运算符61编辑ppt2.4运算符和表达式赋值运算符
1、赋值运算符就是“=”例如:floatf=3.15
2、左值:可以合法的放在“=”左边的操作数
右值:可以合法的放在“=”右边的操作数
常量都是右值,所以不能够放在“=”的左边被赋值;
变量既是左值又是右值,可以放在任何位置。注意:并不是所有的操作数都可以作为左值。符号常量就不能作左值;带运算符的表达式一般也不能作为左值。62编辑ppt2.4运算符和表达式赋值运算符
例如:
floatx,y; constfloatPI=3.14; x=3.5; //正确 3.5=x; //有语法错误 y=x; //正确 y+2=x-10; //语法错误
PI=x; //语法错误63编辑ppt运算符运算符赋值运算符算术运算符关系运算符逻辑运算符位运算符条件运算符逗号运算符64编辑ppt2.4运算符和表达式算术运算符
C++提供的算术运算符包括“+,-,*,/,%,++,--”
1、二元运算符:+(加),-(减),*,/,%2、一元运算符:+(正号),-(负号),++,--65编辑ppt2.4运算符和表达式算术运算符
注意:1、“/”根据操作数不同,运算规律也不同: 整型数为整除运算:例如5/2=2; 浮点数为通常意义的除法:即5.0/2.0=2.5。2、“%”取余数运算符,只能对整型数进行操作,不允许对浮点数进行操作。66编辑ppt2.4运算符和表达式//例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<<endl;}运行结果:
a=-4b=3a/b=-1(float)a/b=-1.33333a%b=-1b%a=367编辑ppt2.4运算符和表达式算术运算符C++中提供了两个特殊的运算符:++,--表示将操作数加减1。++、--运算符根据操作数的位置不同,又称为前置(++i)和后置(i++)1、前置(++i):先自身加1,然后再将加1的值作为(++i)表达式的值;2、后置(i++):将i作为(i++)表达式的值,然后自身再加1。
68编辑ppt例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;}运行结果:i=1i++:1i=2++i:3i=369编辑ppt2.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
70编辑ppt2.4运算符和表达式算术运算符优先级由高到低依次为:
1、+(正号),-(负号),++,--2、*,/,%3、+、-4、=、+=、-=、*=、/=、%=
71编辑ppt例2.7算术运算符和赋值运算符结合#include<iostream>usingnamespacestd;voidmain(){ intx=2,y=3;
x*=y+8;cout<<x<<endl;}运行结果:22原因:x*=y+8等价于x=x*(y+8)72编辑ppt2.4运算符和表达式注意在进行算术运算时,很可能出现溢出,溢出是指在给一个变量赋值时超出了其数据类型表示的范围。溢出不会引起编译错误的,但运行结果会出现偏差。例如:shortinti=40000;
(2字节:-215~215即:-32768~32767)cout<<(k=i+j)<<endl;输出结果:-2553673编辑ppt补码补码:在计算机系统中,数值一律用补码来表示(存储);主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。
正数的补码与原码相同;负数的补码是反码加1;74编辑ppt补码补码:75编辑ppt原码原码:原码、反码、补码都是有符号定点数的表示方法。原码表示,简单直观,乘除运算方便,加减运算比较复杂,要分别考虑符号位和数值位。一个有符号定点数的最高位为符号位,0是正,1是负。原码就是这个数本身的二进制形式。以下都以8位整数为例,例如
0000001就是+1
1000001就是-1
76编辑ppt反码反码:正数的反码、补码和其原码相同。负数的反码是其原码除符号位外其他位取反。例如:-7的反码:符号位7654321原码10000111反码1111100077编辑ppt补码正数的补码:与原码相同。例如,+9的补码是00001001。负数的补码:负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。。即:负数的补码是反码加1;例如,-7的补码是11111001
。符号位7654321原码10000111反码11111000补码1111100178编辑ppt补码补码如何化为原码:符号位为0,正数,补码与原码相同;符号位为1,负数,除符号位外,其余各位取反加1;79编辑ppt2.4运算符和表达式shortinti=40000:2字节,16bits40000=215+212+211+210+26按补码表示,化为整数为:-(214+213+29+28+27+26)=-25536161514131211109876543211001110001000000161514131211109876543211001110001000000取反1110001110111111加1111000111100000080编辑ppt2.4运算符和表达式运算符赋值运算符算术运算符关系运算符逻辑运算符位运算符条件运算符逗号运算符81编辑ppt2.4运算符和表达式关系运算符
关系运算符有==、!=、>=、>、<=、<六种;这些运算符的优先级由高到低依次为:
1、>=、>、<=、<2、==、!=由关系运算符将两个表达式连接起来,就是关系表达式;关系表达式的结果类型为bool,值只能为true或false,屏幕显示为1或0。82编辑ppt例如inta=1,b=2,c=3;cout<<(a==b)<<endl;cout<<(a!=b)<<endl;cout<<(a>=b)<<endl;cout<<(a<b)<<endl;boold;d=a>b==c>a+5;cout<<d<<endl;结果true,输出为1
结果false,输出为0
结果true,输出为1
结果true,输出为1
结果false,输出为0
83编辑ppt2.4运算符和表达式运算符赋值运算符算术运算符关系运算符逻辑运算符位运算符条件运算符逗号运算符84编辑ppt2.4运算符和表达式逻辑运算符
逻辑运算符有三种:这些运算符的优先级由高到低依次为:1、!2、&&3、||除了逻辑非,逻辑运算的级别低于关系运算。逻辑表达式的结果类型也为bool,值只能为true或false,屏幕显示为1或0。85编辑ppt2.4运算符和表达式注意如果多个表达式用&&或||连接,为了提高判断效率,只要能够确定表达式的结果了,运行就不再继续。
例如:
inta=1,b=2;if(a>b&&b++)cout<<"b的值将等于"<<endl;cout<<b<<endl;
运行结果:286编辑ppt2.4运算符和表达式运算符赋值运算符算术运算符关系运算符逻辑运算符位运算符条件运算符逗号运算符87编辑ppt2.4运算符和表达式位运算符
一般高级语言:byte,C语言:bitC++语言中提供了六个位运算符:88编辑ppt2.4运算符和表达式按位与(&)
按位“与”操作的作用是将两个操作数对应的每一位分别进行逻辑与操作。例如:计算3&5 3:00000011 5:000001013&5:0000000189编辑ppt2.4运算符和表达式按位与(&)
使用按位与(&)操作可以将操作数中的若干位置0(其他位不变),或者取操作数中的若干指定位。。例如:将chara的最低位置0:
a=a&0376;87654321a01100001037611111110a0110000090编辑ppt2.4运算符和表达式按位或(|)按位“或”操作的作用是将两个操作数对应的每一位分别进行逻辑或操作。例如:计算3|5 3:00000011 5:000001013|5:00000111
91编辑ppt2.4运算符和表达式按位与(&)
使用按位或(|)操作可以将操作数中的若干位置1(其他位不变)。例如:将整型变量的a(int)的低字节置1:a=a|0xff;
92编辑ppt2.4运算符和表达式按位异或(^)按位异或操作的作用是将两个操作数对应的每一位分别进行异或操作。运算规则:
1^1=0,0^0=0,1^0=0^1=1
例如:计算3^5 3:00000011 5:000001013^5:0000011093编辑ppt2.4运算符和表达式例如:如何使8位二进制数01111010的后四位翻转?可以将该二进制数与00001111进行异或操作:01111010
(^)00001111
01110101如果某位和0异或,结果是该位的原值,如果某位和1异或,则结果与该位原来的值相反。使用按位异或(^)操作可以将操作数中的若干位反转。94编辑ppt2.4运算符和表达式按位取反(~)按位取反是一个一元运算符,它的作用是将两个操作数对应的每一位分别进行取反操作。具体运算规则:~1=0,~0=1。
例如:计算~5 5:00000101~5:1111101095编辑ppt使用位运算实现掩码运算
掩码:其实就是一个位模式。表示从一个字中选出一组位。
例如:掩码0xFF表示一个字的低位字节。掩码0xFFFFFF00,它表示一个字(32位)除了最低字节外的其他高位字节。
掩码~0xFF也可表示一个字除了最低字节外的其他高位字节。2.4运算符和表达式编辑ppt位运算应用举例例:2-7设主机A的IP地址为IPa,子网掩码设置为MASKa,主机B的IP地址为IPb,子网掩码设置为MASKb。(1)当主机A向主机B发送IP包时,如何判断主机B是否与自己在同一子网中?(2)当主机A和主机B通信时,两主机又如何确认对方和自己在同一子网中?2.4运算符和表达式编辑ppt位运算应用举例例2-7 解:(1) (IPa^IPb)&MASKa==0
或(IPa&MASKa)==(IPb&MASKa)(2) (IPa&MASKa)==(IPb&MASKb)
或((IPa&MASKa)^(IPb&MASKb))==02.4运算符和表达式编辑ppt2.4运算符和表达式左移<<:
按照指定的位数将一个二进制数值向左移动。左移后,低位补0,移出的高位舍弃。右移>>:
按照指定的位数将一个二进制数值向右移动,右移后,移出的低位舍弃。如果是无符号数则高位补0,如果是有符号数则高位补符号位或0,在VC++6.0(VC2005)环境下高位补符号位。99编辑ppt例子chara=-8;a=a>>2;cout<<"a="<<(int)a<<endl;a=-2100编辑ppt例子chara=2;a=a<<1;cout<<"a="<<(int)a<<endl;a=4101编辑ppt2.4运算符和表达式位运算符
在C++中可以将位运算符和赋值运算符结合在一起进行运算,因此C++还提供另外5种运算符&=,|=,^=,<<=和>>=。
例如:
x&=y相当于 x=x&y
x|=y 相当于 x=x|y
x^=y 相当于 x=x^yx<<=y相当于 x=x<<yx>>=y相当于 x=x>>y102编辑ppt2.4运算符和表达式位运算符这些位运算符的优先级由高到低依次为:1、~2、<<,>>3、&4、^5、|6、&=,|=,^=,<<=和>>=103编辑ppt2.4运算符和表达式运算符赋值运算符算术运算符关系运算符逻辑运算符位运算符条件运算符逗号运算符104编辑ppt2.4运算符和表达式条件运算符条件运算符语法格式为:
表达式1?(表达式2):(表达式3);运算的结果是:如果表达式1的值为真,则返回表达式2的值,否则返回表达式3的值。例1:x=a<b?a:b;例2:
intx=0,y=1;cout<<(x>y?x:y)<<endl;结果为:1105编辑ppt2.4运算符和表达式运算符赋值运算符算术运算符关系运算符逻辑运算符位运算符条件运算符逗号运算符106编辑ppt2.4运算符和表达式逗号运算符
逗号表达式的语法格式为:
表达式1,表达式2,……,表达式n;C++顺序计算表达式1,表达式2,……,表达式n的值,并将最后一次计算的结果作为逗号表达式的结果。例如:
inta,b,c;a=1,b=2,c=a+b;
结果:3107编辑ppt例子inta,b,c,d;d=(a=1,b=2,c=a+b,a+b+c);cout<<d<<endl;结果:6108编辑ppt2.4运算符和表达式数据类型转换
当表达式中出现多种数据类型的混合运算时,往往需要进行类型转换。表达式中的类型转换分成两种:1、隐式类型转换2、强制类型转换。109编辑ppt2.4运算符和表达式隐式类型转换各种二元运算符在进行运算时都要求两个操作数的数据类型一致。如果类型不一致,则系统自动对数据进行转换(隐式类型转换)。转换的基本原则:
将精度较低、范围较小的类型转换成精度较高、范围较大的类型。char→short→int→long→float→double
110编辑ppt隐式类型转换例2-8数据类型的自动转换。include<iostream>usingnamespacestd;voidmain(){ charch='a';
inti=100;doubled=123.09;
cout<<ch+i<<endl; //自动转换为int型
cout<<ch+i+d<<endl;//自动转换为double型}运行结果:
197320.09提示:在转换过程中不会造成数据精度的丢失。2.4运算符和表达式111编辑ppt2.4运算符和表达式隐式类型转换对于同一种精度的无符号数和有符号数,在进行算术运算中,有符号数向着无符号数方向进行隐式类型转换:signed→unsigned。例如: inta=100; unsignedinti=99; cout<<(i-a)<<endl;-1补码为十六进制的FFFFFFFF232-1=4294967295结果为:4294967295112编辑ppt2.4运算符和表达式隐式类型转换
逻辑运算符要求参与运算的操作数为bool类型,如果是其他类型,则系统自动将其转换成bool类型,转换规则:0为false,非0为true。赋值运算符要求“=”左右两边的操作数数据类型相同,如果类型不一致,则自动将右边的操作数类型向着左边的操作数类型转换。例如:
inti=3.15; cout<<i<<endl;运行结果:3113编辑ppt2.4运算符和表达式强制类型转换
强制类型转换通过是类型说明符和括号来实现的显式转换,其语法格式为:
(数据类型名)表达式或数据类型名(表达式)例如:
inti=97;cout<<(char)i<<endl;floatf=3.75;cout<<(int)f<<endl;运行结果:a3114编辑pptC风格的强制类型转换
语法格式为:(数据类型名)表达式或数据类型名(表达式)
例如:
inti=97; cout<<(char)i<<endl; floatf=3.75; cout<<(int)f<<endl;2.4运算符和表达式编辑pptC++的强制类型转换符
语法格式为:
static_cast<类型名>(表达式)
例如:
inti=97; cout<<static_cast<char>(i)<<endl; floatf=3.15; cout<<static_cast<int>(f)<<endl;2.4运算符和表达式编辑ppt强制类型转换几点说明:如果强制由高精度的数据类型转换至低精度的数据类型,数据精度将受到损失,从这个意义上说,强制类型转换是一种不安全的类型转换。基本数据类型之间的强制转换都是允许的,但当遇到不允许的类型转换时,用C风格的类型转换,编译时不会报错;而用static_cast,在编译时就会报错。
建议:在C++编程时要用static_cast进行强制类型转换。2.4运算符和表达式编辑ppt第2章基本数据类型与表达式2.1词法记号和标识符1
2.2基本数据类型22.3变量和常量32.4运算符和表达式4
2.5基本输入输出52.6使用string类型处理字符串6118编辑ppt2.5基本输入输出在iostream库中包含有一个标准输入流对象cin和一个标准输出流对象cout,分别用来实现从键盘读取数据,以及将数据在屏幕输出。定义文件流对象,实现文件的读写操作。1、cin:从键盘读取数据
2、cout:将数据在屏幕输出3、I/O流的格式控制4、文件的输入输出119编辑ppt1、标准输入流cincin负责从键盘读取数据,使用提取操作符“>>”就可以将键盘键入的数据读入到变量中。语法格式为:
cin>>变量1>>变量2…>>变量n;
例如: inta,b; charch; cin>>a>>b>>ch;2.5基本输入输出120编辑ppt例2-9:计算从键盘输入的若干个整数的和。#include<iostream>usingnamespacestd;voidmain(
){intsum=0,value;while(cin>>value) //如果能从cin提取数值,sum+=value;//则cin的值为真,执行循环cout<<"sumis:"<<sum<<endl;}运行结果:
12345^z //键盘输入sum is:15北京邮电大学信息与通信工程学院2.5基本输入输出121编辑ppt2、标准输出流cout
cout负责将变量或常量中的数据输出到屏幕,使用插入操作符“<<”就可以将变量或常量的数据显示在屏幕上。例如:
cout<<"Helloworld!\n";cout能够自动识别“<<”后面的数据类型并进行显示,并且可以从左到右一次显示多个变量。2.5基本输入输出122编辑ppt例子#include<iostream>usingnamespacestd;voidmain(){ inta,b; charch; cout<<"请按顺序输入2个整数和1字符:\n";cin>>a>>b>>ch; cout<<"a="<<a<<"
b="<<b<<"ch="<<ch<<endl;}请按顺序输入2个整数和1字符:1223aa=12b=23ch=a123编辑ppt3、IO流的格式控制
库文件iomanip:(manipulator)
常用控制符:setfill(c)设置填充字符
setw(n)设置域宽为n
2.5基本输入输出124编辑ppt设置输出宽度和填充字符
setw(n)
设置域宽,即设置“<<”符号后面的数据占用的屏幕宽度。
setfill(c)
设置填充字符,即“<<”符号后面的数据长度小于域宽时,使用什么字符进行填充。2.5基本输入输出125编辑pptsetw(n)和setfill(c)例1:
cout<<setw(8)<<'a'<<setw(8)<<'b'<<endl;输出结果:
例2:
cout<<setfill('*')<<setw(5)<<'a'<<endl;输出结果:_______a_______b****a126编辑ppt#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基本输入输出127编辑ppt2.5I/O流控制注意1
除了setw()控制符外,其他控制符一旦设置,则对其后的所有输入输出产生影响。而setw()控制符只对其后输出的第一个数据有效,对其他数据没有影响,所以如下代码:
cout<<setw(8)<<'a'<<'b'<<endl;输出结果:_______ab128编辑ppt2.5I/O流控制注意2
setw()的默认为setw(0),意思是按实际输出。如果输出的数值占用的宽度超过setw(intn)设置的宽度,则按实际宽度输出。例如:
floatf=0.12345;cout<<setw(3)<<f<<endl;0.12345129编辑ppt2.5I/O流控制3、I/O流的格式控制
C++默认输出浮点数的有效位为6位,那么要想控制输出的数据的长度,该如何呢?比如:floatf=3.1234567;如何让显示结果为3.12?
C++提供了setprecision(intn)可以控制显示浮点数的有效位。130编辑ppt#include<iostream>#include<iomanip>usingnamespacestd;voidmain(){ 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.42857152.5I/O流控制131编辑ppt2.5I/O流控制3、I/O流的格式控制
如何控制小数的位数?
setiosflags(ios::fixed)控制符是用定点方式表示浮点数,将setprecision(intn)和setiosflags(ios::fixed)结合,可以使用setprecision(intn)控制小数点右边小数的个数。
当设置为定点格式时,若不设置精度则显示6位有效小数。132编辑ppt#include<iostream>#include<iomanip>usingnamespacestd;voidmain(){floatf=17/7.0;
cout<<setiosflags(ios::fixed);cout<<setprecision(0)<<f<<endl;cout<<setprecision(2)<<f<<endl;cout<<setprecision(3)<<f<<endl;cout<<setprecision(4)<<f<<endl;}22.432.4292.42862.5I/O流控制2.42857133编辑ppt2.5I/O流控制3、I/O流的格式控制
如何控制指数表示的小数个数?
setiosflags(ios::scientific)控制符使用指数方式显示浮点数,将setprecision(intn)和setiosflags(ios::scientific)结合,可以使用setprecision(intn)控制指数表示法的小数位数。用科学记数格式显示实数时,e前面总是带有一位整数的实数。在没有设置精度时,显示6位有效的小数位。134编辑ppt#include<iostream>#include<iomanip>usingnamespacestd;voidmain(){floatf=17/7.0;
cout<<setiosflags(ios::scientific);cout<<setprecision(2)<<f<<endl;cout<<setprecision(3)<<f<<endl;cout<<setprecision(4)<<f<<endl;}2.43e+0002.429e+0002.4286e+0002.5I/O流控制2.42857135编辑ppt文件的输入输出
文件(磁盘文件):存储在外部存储器上的数据的集合。根据文件中数据不同的组织形式,通常把文件分为: 1、文本文件 2、二进制文件2.5基本输入输出136编辑ppt文件的输入输出
文件的读写操作:当要对磁盘文件进行操作时,使用的是文件流对象。操作步骤:定义文件流对象使用标准库的ifstream类和ofstream类来定义文件流对象。
ifstream类提供文件的读操作。
ofstream类提供文件的写操作。2.5基本输入输出137编辑ppt文件的输入输出
操作步骤:
指定和文件流对象关联的磁盘文件在定义流对象的同时指定关联文件。
或,先定义对象,然后通过调用它的open()成员函数来指定关联文件。
在指定文件流对象和磁盘文件关联的同时,还可以指定文件打开模式。2.5基本输入输出138编辑ppt文件的输入输出
操作步骤:使用插入运算符“<<”和提取运算符“>>”进行文件(文本文件)的读/写。文件读/写完毕后,可以调用close()成员函数关闭文件,该操作会解除已建立的文件流对象和磁盘文件之间的关联。2.5基本输入输出139
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 信托审计服务合同
- 地基基础施工方案
- 责任转移担保合同
- 项目变更与调整协议模板
- 企业安全用电管理制度
- 康复护理服务协议
- 写字楼租赁信息安全与隐私保护协议
- 桌椅租赁合同标准格式
- 《初中化学有效预习作业的研究》课题研究课题实施方案
- 公司设备租赁协议范例
- 2024年高级制图员技能理论考试题库大全800题(含答案)
- 基于单元主题的小学英语跨学科学习活动的实践与研究
- DL∕T 1773-2017 电力系统电压和无功电力技术导则
- NBT 31021-2012风力发电企业科技文件规档规范
- AQ/T 1118-2021 矿山救援培训大纲及考核规范(正式版)
- 苏教版五年级数学上册第二单元-多边形的面积专项试卷附答案
- 教育哲学课程教学大纲
- 提升体检科体检项目的质量控制计划三篇
- 四年上册美术教案 12《精美的邮票》 人教版
- 2024年共青团入团积极分子结业考试题库及答案
- 项目接管进驻方案
评论
0/150
提交评论