1、C+C+程序设计程序设计第第2 2章章 基本数据类型与表达式基本数据类型与表达式 湖南科技学院湖南科技学院 数学与计算科学系数学与计算科学系程序中最基本的元素是数据类型,根据数据类型可以为变量或常量分配内存空间,将变量、常量和运算符结合在一起组成表达式,进行复杂的运算和处理。第第2 2章章 基本数据类型与表达式基本数据类型与表达式2.1 2.1 词法记号和标识符词法记号和标识符2.2 2.2 基本数据类型基本数据类型2.3 2.3 变量和常量变量和常量2.4 2.4 运算符和表达式运算符和表达式2.5 2.5 基本输入输出基本输入输出2.1 2.1 词法记号和标识符词法记号和标识符2.1 2.
2、1 词法记号和标识符词法记号和标识符1、C+字符集英文字母:AZ,az数字字符:09特殊字符:+-*/%=!#&|_ “;.,()空格2022-11-115北京邮电大学电信工程学院计算机技术中心2.1 2.1 词法记号和标识符词法记号和标识符1、什么是关键字?预先定义好的标识符,C+编译器对其进行特殊处理。2、如何识别关键字?使用VC+6.0的编辑环境时,缺省是蓝色的字符即为关键字。2022-11-116北京邮电大学电信工程学院计算机技术中心2.1 2.1 词法记号和标识符词法记号和标识符3、标识符 标识符是程序员声明的单词,它命名程序正文中的一些实体,如函数名、变量名、类名、对象名等。C+标
3、识符的构成规则如下:1、不能是C+的关键字;2、第一个字符必须是大写、小写字母或下划线;3、不包含空格和“+、-、;”等特殊字符;4、为方便输入,长度一般不超过31个字符。2022-11-117北京邮电大学电信工程学院计算机技术中心2.1 2.1 词法记号和标识符词法记号和标识符 例如:合法的标识符:apple、_Student、_123、No1、max_num 不合法的标识符:51job、max num、-abc 注意:C+的表示符是大小写敏感的,即abcABC。2022-11-118北京邮电大学电信工程学院计算机技术中心2.1 2.1 词法记号和标识符词法记号和标识符4、分隔符 分隔符用于
4、分隔程序中的正文,在C+中使用下列字符作为分隔符:(),:;这些分隔符不表示实际的操作,仅用于构造程序。比如“;”,用来作为一句完整语句的结束。2022-11-119北京邮电大学电信工程学院计算机技术中心2.1 2.1 词法记号和标识符词法记号和标识符5、空白 在C+语句中经常出现空白(制表符、空格、空行)等,通常都忽略不计。2022-11-1110北京邮电大学电信工程学院计算机技术中心2.1 2.1 词法记号和标识符词法记号和标识符2.22.2、基本数据类型、基本数据类型 什么是数据类型?数据是程序处理的对象,数据根据其本身的特点进行分类,从而形成不同的数据类型。例如:数学中有自然数、整数、
5、实数2022-11-1112北京邮电大学电信工程学院计算机技术中心2.22.2、基本数据类型、基本数据类型基本数据类型基本数据类型 整型:int 字符型:char、wchar_t 实型:float、double 逻辑型:bool2022-11-1113北京邮电大学电信工程学院计算机技术中心2.22.2、基本数据类型、基本数据类型自定义数据类型 数组:type 指针:type*引用:type&空类型:void 结构:struct 联合:union 枚举:enum 类:class2022-11-1114北京邮电大学电信工程学院计算机技术中心2.22.2、基本数据类型、基本数据类型修饰符 在C+中描
6、述为了更加准确的描述数据类型,提供了4个关键字用来修饰基本的数据类型:1、长型 long 2、短型 short 3、有符号 signed 4、无符号 unsigned2022-11-1115北京邮电大学电信工程学院计算机技术中心1、short:仅用来修饰int,称为短整型,占2字节内存,也可直接简写为short;2、long:仅修饰int和double,因为在不同的编译环境中使用long修饰的数据所占内存不同,这里列出的是在VC+6.0的环境下的。3、unsigned:用来修饰char、short和int,表示该数据类型为无符号数。4、signed:用来修饰char、short和int,表示该
7、数据类型为有符号数,为缺省设置。2022-11-1116北京邮电大学电信工程学院计算机技术中心2.22.2、基本数据类型、基本数据类型数据类型和内存空间 不同的数据类型,加上不同的修饰符就具有了不同的特点,在内存中占用的空间也不同,因而其所能表示的数值范围也不尽相同。内存单元的单位是字节,因此用来表示数据类型的长度的单位也是字节。2022-11-1117北京邮电大学电信工程学院计算机技术中心2.22.2、基本数据类型、基本数据类型注意 整型int的长度等于机器的字长:16位机:int=2字节;32位机:int=4字节。但是short和long表示的数据长度是固定的,任何支持标准C+的编译器都是
8、如此,因而如果需要编写可移植性好的程序,应将整型声明为short或long。2022-11-1118北京邮电大学电信工程学院计算机技术中心2.22.2、基本数据类型、基本数据类型例题 编写一个程序,输出基本数据类型char,int,float,double,bool的长度。提示:使用sizeof(数据类型)能够获取不同数据类型的长度。2022-11-1119北京邮电大学电信工程学院计算机技术中心/输出基本数据类型的长度#include using namespace std;void main()cout“char :”sizeof(char)“字节n;coutint :sizeof(int)
9、字节n;coutfloat:sizeof(float)字节n;coutdouble:sizeof(double)字节n;coutbool :sizeof(bool)字节n;2.3 2.3 变量和常量变量和常量2.3 2.3 变量和常量变量和常量概述 程序所处理的数据不仅分为不同的数据类型,而且每种类型的数据还分为变量和常量。程序在运行中就是通过这些变量和常量来操作数据的。什么是变量?在C+中,变量是存储信息的地方。变量的实质是内存中的一个地址空间,在这个地址空间中可以进行数据的存储和读取。2022-11-1122北京邮电大学电信工程学院计算机技术中心2.3 2.3 变量变量变量定义的格式:数据
10、类型 变量名1,变量名2,变量名n;例如:定义各种类型的变量 int num;float f;char ch;short s;double area,length;2022-11-1123北京邮电大学电信工程学院计算机技术中心2.3 2.3 变量变量说明 在创建或定义变量时,需要指明该变量的数据类型和名称。数据类型:决定变量的存储方式和可以进行的操作;变量名称:用来区分不同的变量。变量一旦被定义,则系统自动为其分配应占的内存。2022-11-1124北京邮电大学电信工程学院计算机技术中心2.3 2.3 变量变量 变量名称的定义遵循标识符定义的规则,实际上变量名称就是其中一种标识符。常用的命名约
11、定有三种:1、Unix环境常用的命名法 my_age、num_of_student 2、驼峰式命名法 myAge、numOfStudent 3、匈牙利标记法 iMyCar、bIsRight2022-11-1125北京邮电大学电信工程学院计算机技术中心2.3 2.3 变量变量赋值 使用赋值运算符“=”可以将一个值赋给变量。例如:unsigned short age;age=18;或者 unsigned short age=18;2022-11-1126北京邮电大学电信工程学院计算机技术中心2.3 2.3 变量变量 我们可以一次定义多个相同数据类型的变量,也可以一次为多个变量初始化:char ch
12、1=a,ch2=b;int height=10,width=6,area;特性:变量可以被多次赋值,但每次赋值后,原值都会被新值覆盖。2022-11-1127北京邮电大学电信工程学院计算机技术中心例例2.22.2:赋值运算符的使用:赋值运算符的使用#include using namespace std;void main()int myAge=18;cout“myAge=”myAgeendl;myAge=20;cout“myAge=”myAgeendl;运行结果:myAge=18 myAge=202.3 2.3 变量变量typedef 为已有的数据类型定义一个同义词,或者叫做别名。例如:ty
13、pedef unsigned int UINT;关键字 数据类型 别名赋值注意:使用typedef定义同义词时并不分配内存空间。2022-11-1129北京邮电大学电信工程学院计算机技术中心2.3 2.3 常量常量 严格来说,常量又分成符号常量和常数。符号常量:代表一个固定不变值的名字;常数:程序中使用的具体的数据。2022-11-1130北京邮电大学电信工程学院计算机技术中心2.3 2.3 常量常量符号常量 C+中提供了一个关键字const,用来区分常量和变量。并且由于常量代表一个固定的值,并且该值在程序运行过程中不能够被改变,所以要求常量在定义的时候必须进行初始化。例如:const int
14、 i=10;关键字 数据类型 常量名=初始值;2022-11-1131北京邮电大学电信工程学院计算机技术中心2.3 2.3 常量常量define关键字 在C语言中使用预编译指令#define也能够定义常量。例如:#define PI 3.1415927 关键字 常量名 值 该语句属于预编译指令,不属于C+语句,因而行尾不需要使用分号。并且由于C+是向下兼容的,因而C语言的程序能够在C+的编译器下顺利运行。但是在C+编程中,建议使用const替代#define定义常量。2.3 2.3 常量常量整型常数 十进制数:100 8进制数:0144 16进制数:0 x64用 U或 u表示无符号整型,如65
15、535U。用 L或 l表示长整型。默认的是int型。2022-11-1133北京邮电大学电信工程学院计算机技术中心2.3 2.3 常量常量实型常数 1 小数形式 例如:0.123、23.12 2 指数形式 例如:123e5或123E5 =123*105 注意:e前面必须有数字,e后面必须是整数实常数默认为double型可用后缀 F(f)表示实数常数为float型。2022-11-1134北京邮电大学电信工程学院计算机技术中心2.3 2.3 常量常量字符常数 1、用单引号扩起来的一个字符,例如:a、?。2、转义字符 以开头的字符序列,代表特殊的意义。例如:n、t、”2022-11-1135北京邮
16、电大学电信工程学院计算机技术中心a0 x07bell(响铃)n0 x0A换行r0 x0D回车t0 x09制表符v0 x0B垂直跳格b0 x08Backspace0 x5C0 x22双引号0 x27单引号 ddd 1-3位8进数 xhh 1-2位16进数例例2.32.3:打印特殊字符#include using namespace std;void main()cout“输出字母:”aaendl;cout“输出字母:”nn;运行结果:输出字母:a (蜂鸣器响一声)输出字母:n (换行)2.3 2.3 常量常量 反斜杠还可以和八进制数或十六进制结合起来表示相应的ASCII码。表示形式如下:ddd:
17、13位八进制数 xhh:12位十六进制数 我们知道在十六进制的ASCII码表中,字母az的ASCII值是61H7AH,因此我们也可以使用如下两句代码替代例2.3中的输出,达到同样的结果。cout“输出字母:”x61x07endl;cout“输出字母:”x6Ex0A;2.3 2.3 常量常量字符变量 char ch1=a,ch2=97,ch3=/064 原因:在内存中,字符数据以ASCII码存储,即以整数表示,所以,C+中字符数据和整数可以相互赋值。2022-11-1139北京邮电大学电信工程学院计算机技术中心例例2.42.4:字符数据和整型数据的转换#include using namespa
18、ce std;void main()int n=a;char ch=97;cout”输出内容:”nendl;cout”输出内容:”chendl;运行结果:输出内容:97 输出内容:a注意:变量在输出时,根据其本身的数据类型进行输出。2.3 2.3 常量常量字符串常量 由一对双引号括起来的字符序列,例如:“how do you do?”“hello world!”2022-11-1141北京邮电大学电信工程学院计算机技术中心2.3 2.3 常量常量字符和字符串的区别 1、字符常量和字符串常量是不同的,字符串常量以/0结尾。例如:字符串Hello在内存中的形式:2、“a”不等于a,”a”占2个字节
19、,a1个字节H e l l o 0a 0a2022-11-1142北京邮电大学电信工程学院计算机技术中心2.3 2.3 常量常量字符串变量 char a20=“Hello worldn”;char b5=“a”;char c=a;思考 字符串“/x07Operatingtsystem”有几个字符?显示结果如何?2022-11-1143北京邮电大学电信工程学院计算机技术中心2.3 2.3 常量常量逻辑常数 逻辑型常数只有两个:false(假)和true(真)。在显示器上显示为0和1。2022-11-1144北京邮电大学电信工程学院计算机技术中心2.4 2.4 运算符和表达式运算符和表达式2.4
20、2.4 运算符和表达式运算符和表达式1、表达式2、语句和块3、运算符 赋值运算符、算术运算符、关系运算符、逻辑运算符、位运算符、条件运算符、逗号运算符2022-11-1146北京邮电大学电信工程学院计算机技术中心2.4 2.4 运算符和表达式运算符和表达式表达式 变量、常量是存放数据的地方,那么在C+语言中这些数据是如何处理和计算的呢?在C+语言中将变量、常量和运算符有机结合在一起组成的就是表达式,利用表达式C+可以进行复杂的运算和处理。2022-11-1147北京邮电大学电信工程学院计算机技术中心例如:例如:3.2 /简单表达式,值为3.22+3 /常量表达式,值为5a /简单表达式,值为变
21、量a的值x=(a+b)*c;/较为复杂的表达式 表达式是可以嵌套的,比如y=x=a+b,该表达式先将a和b进行相加,然后将结果赋值给x,再将x=a+b的值赋给y。2.4 2.4 运算符和表达式运算符和表达式2.4 2.4 运算符和表达式运算符和表达式表达式 定义:表达式是操作符、操作数和标点符号组成的序列。操作符:+-*/等 操作数:变量、常量、数组等 标点符号:空格、回车等2022-11-1149北京邮电大学电信工程学院计算机技术中心2.4 2.4 运算符和表达式运算符和表达式语句和块 C+中所有的操作运算都通过表达式来实现。由表达式和结尾的“;”组成一个C+语句;多条C+语句通过大括号括起
22、来,组成一个块语句,例如:int temp=x;x=y;y=temp;一般来说属于同一个逻辑关系的多条语句组成块语句。2022-11-1150北京邮电大学电信工程学院计算机技术中心2.4 2.4 运算符和表达式运算符和表达式运算符 运算符具有优先级和结合性。优先级:级别高的先运算,级别低的后运算。例如:*/高于+-结合性:自左向右结合还是自右向左结合。例如:1+2+3,+自左向右结合。2022-11-1151北京邮电大学电信工程学院计算机技术中心2.4 2.4 运算符和表达式运算符和表达式运算符根据运算符对操作数的要求不同,分成:一元运算符:仅需要一个操作数的运算符,例如+等 二元运算符:需要
23、两个操作数的运算符,例如:+、-、*、/等,形如“操作数1 运算符 操作数2”三元运算符:需要三个操作数的运算符,只有条件运算符“?:”。2022-11-1153北京邮电大学电信工程学院计算机技术中心2.4 2.4 运算符和表达式运算符和表达式赋值运算符 1、赋值运算符就是“=”例如:float f=3.15 2、左值:可以合法的放在“=”左边的操作数 右值:可以合法的放在“=”右边的操作数 常量都是右值,所以不能够放在“=”的左边被赋值;变量既是左值又是右值,可以放在任何位置。2022-11-1154北京邮电大学电信工程学院计算机技术中心2.4 2.4 运算符和表达式运算符和表达式算术运算符
24、 C+提供的算术运算符包括“+,-,*,/,%,+,-”1、二元运算符:+(加),-(减),*,/,%2、一元运算符:+(正号),-(负号),+,-2022-11-1155北京邮电大学电信工程学院计算机技术中心2.4 2.4 运算符和表达式运算符和表达式算术运算符 注意:1、“/”根据操作数不同,运算规律也不同:整型数为整除运算:例如5/2=2;浮点数为通常意义的除法:即5.0/2.0=2.5。2、“%”取余数运算符,只能对整型数进行操作,不允许对浮点数进行操作。2022-11-1156北京邮电大学电信工程学院计算机技术中心2.4 2.4 运算符和表达式运算符和表达式算术运算符 C+中提供了两
25、个特殊的运算符:+,-表示将操作数减1。+、-运算符根据操作数的位置不同,又称为前置(+i)和后置(i+)1、前置(+i):先自身加1,然后再将加1的值作为(+i)表达式的值;2、后置(i+):将i作为(i+)表达式的值,然后自身再加1。2022-11-1157北京邮电大学电信工程学院计算机技术中心例例2.62.6:自增运算符的使用#include using namespace std;void main()int i=1;cout”i=”iendl;c o u t ”i+:”i+e n d l;cout”i=”iendl;cout”+i:”+iendl;cout”i=”iendl;1123
26、32.4 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%y2022-11-1159北京邮电大学电信工程学院计算机技术中心例如:#include using namespace stdvoid main()int x=2,y=3;x*=y+8;coutxendl;原因:x*=y+8 等价于 x=x*(y+8)/显示222.4 2.4
27、运算符和表达式运算符和表达式算术运算符 这些运算符的优先级由高到低依次为:1、+(正号),-(负号),+,-2、*,/,%3、+、-4、=、+=、-=、*=、/=、%=2022-11-1161北京邮电大学电信工程学院计算机技术中心2.4 2.4 运算符和表达式运算符和表达式注意 在进行算术运算时,很可能出现溢出,溢出是指在给一个变量赋值时超出了其数据类型表示的范围。溢出不会引起编译错误的,但运行结果会出现偏差。例如:short int i=40000;couti=、=、=、=、2、=、!=由关系运算符将两个表达式连接起来,就是关系表达式;关系表达式的结果类型为bool,值只能为true或fal
28、se,屏幕显示为1或0。2022-11-1163北京邮电大学电信工程学院计算机技术中心例如int a=1,b=2,c=3;couta=bendl;couta!=bendl;cout=bendl;coutabb=ca+5;coutdb&b+)cout”b的值没有被改变。”endl;coutbendl;运行结果:22022-11-1166北京邮电大学电信工程学院计算机技术中心2.4 2.4 运算符和表达式运算符和表达式位运算符 一般高级语言:byte C语言:bit C+语言中提供了六个位运算符,可以对整数进行位操作,分别是按位与(&),按位或(|),按位异或(),按位取反(),左移位()。202
29、2-11-1167北京邮电大学电信工程学院计算机技术中心2.4 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 例如:将char a;的最低位置0:取int a;的低字节:a=a&0376;char c=a&0377;2022-11-1168北京邮电大学电信工程学院计算机技术中心2.4 2.4 运算符和表达式运算符和表达式按位或(|)按位或操作的作用是将两个操作数对应的每一位分别进行逻辑或操作。例如:计算
30、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 例如:将int a;的低字节置1:a=a|0 xff;2022-11-1169北京邮电大学电信工程学院计算机技术中心2.4 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 02022-11-1170北京邮电大学电信工程学院计算机技术中心2.4
31、2.4 运算符和表达式运算符和表达式按位异或()例如:如果使8位二进制数01111010的后四位翻转?可以将该二进制数与00001111进行异或操作:0 1 1 1 1 0 1 0 ()0 0 0 0 1 1 1 1 0 1 1 1 0 1 0 12022-11-1171北京邮电大学电信工程学院计算机技术中心2.4 2.4 运算符和表达式运算符和表达式按位取反()按位取反是一个一元运算符,它的作用是将两个操作数对应的每一位分别进行取反操作。具体运算规则:1=0,0=1。例如:计算5 5:0 0 0 0 0 1 0 1 5:1 1 1 1 1 0 1 02022-11-1172北京邮电大学电信工
32、程学院计算机技术中心2.4 2.4 运算符和表达式运算符和表达式左移:按照指定的位数将一个二进制数值向右移动,右移后,移出的低位舍弃。如果是无符号数则高位补0,如果是有符号数则高位补符号位或0,在VC+6.0环境下高位补符号位。2022-11-1173北京邮电大学电信工程学院计算机技术中心例子char a=-8;a=a2;cout”a=”(int)aendl;例子char a=2;a=a1;cout”a=”(int)aendl;2.4 2.4 运算符和表达式运算符和表达式位运算符 在C+中可以将位运算符和赋值运算符结合在一起进行运算,因此C+还提供另外5种运算符&=,|=,=,=。例如:x&=
33、y 相当于 x=x&y x|=y 相当于x=x|y x=y 相当于x=xy x=y 相当于 x=x=y 相当于 x=xy 2022-11-1176北京邮电大学电信工程学院计算机技术中心2.4 2.4 运算符和表达式运算符和表达式位运算符这些位运算符的优先级由高到低依次为:1、2、3、&4、5、|6、&=,|=,=,=2022-11-1177北京邮电大学电信工程学院计算机技术中心2.4 2.4 运算符和表达式运算符和表达式条件运算符 条件运算符语法格式为:表达式1?(表达式2):(表达式3);运算的结果是:如果表达式1的值为真,则返回表达式2的值,否则返回表达式3的值。例1:x=ab?a:b;例
34、2:int x=0,y=1;couty?x:y)endl;2022-11-1178北京邮电大学电信工程学院计算机技术中心2.4 2.4 运算符和表达式运算符和表达式逗号运算符 逗号表达式的语法格式为:表达式1,表达式2,表达式n;C+顺序计算表达式1,表达式2,表达式n的值,并将最后一次计算的结果作为逗号表达式的结果。例如:int a,b,c;a=1,b=2,c=a+b;2022-11-1179北京邮电大学电信工程学院计算机技术中心例子例子 int a,b,c,d;d=(a=1,b=2,c=a+b,a+b+c);coutdendl;62.4 2.4 运算符和表达式运算符和表达式数据类型转换 当
35、表达式中出现多种数据类型的混合运算时,往往需要进行类型转换。表达式中的类型转换分成两种:1、隐式类型转换 2、强制类型转换。2022-11-1181北京邮电大学电信工程学院计算机技术中心2.4 2.4 运算符和表达式运算符和表达式1、隐式类型转换 各种二元运算符在进行运算时都要求两个操作数的数据类型一致。如果类型不一致,则系统自动对数据进行转换(隐式类型转换)。转换的基本原则:将精度较低、范围较小的类型转换成精度较高、范围较大的类型。char short int long float double2022-11-1182北京邮电大学电信工程学院计算机技术中心2.4 2.4 运算符和表达式运算符
36、和表达式1、隐式类型转换 对于同一种精度的无符号数和有符号数,在进行算术运算中,有符号数向着无符号数方向进行隐式类型转换:signed unsigned。例如:int a=100;unsigned int i=99;couti-aendl思考一下,如果将unsigned int i=99;改为unsigned short i=99;结果如何?2022-11-1183北京邮电大学电信工程学院计算机技术中心2.4 2.4 运算符和表达式运算符和表达式1、隐式类型转换 逻辑运算符要求参与运算的操作数为bool类型,如果是其他类型,则系统自动将其转换成bool类型,转换规则:0为false,非0为tr
37、ue。赋值运算符要求“=”左右两边的操作数数据类型相同,如果类型不一致,则自动将右边的操作数类型向着左边的操作数类型转换。例如:int i=3.15;coutiendl;2022-11-1184北京邮电大学电信工程学院计算机技术中心2.4 2.4 运算符和表达式运算符和表达式2、强制类型转换 强制类型转换通过是类型说明符和括号来实现的显式转换,其语法格式为:(数据类型名)表达式 或 数据类型名(表达式)例如:int i=97;cout(char)iendl;float f=3.75;cout(int)f”就可以将键盘键入的数据读入到变量中。语法格式为:cin变量1变量2变量n;例如:int a
38、,b;char ch;cinabch;2022-11-1188北京邮电大学电信工程学院计算机技术中心2.5 2.5 I/O流控制流控制2、标准输出流cout cout负责将变量或常量中的数据输出到屏幕,使用插入操作符“”就可以将变量或常量的数据显示在屏幕上。例如:cout”Hello world!n”;cout能够自动识别“”后面的数据类型并进行显示,并且可以从左到右一次显示多个变量。2022-11-1189北京邮电大学电信工程学院计算机技术中心例子例子#include using namespace std;void main()int a,b;char ch;coutabch;cout”a
39、=”a”b=”b”ch=”chendl;2.5 2.5 I/O流控制流控制3、IO流的格式控制 库文件 iomanip 常用控制符:setfill(c)设置填充字符 setw(n)设置域宽为n 2022-11-1191北京邮电大学电信工程学院计算机技术中心2.5 2.5 I/O流控制流控制设置输出宽度和填充字符 setw(n)设置域宽,即设置“”符号后面的数据占用的屏幕宽度。setfill(c)设置填充字符,即“”符号后面的数据长度小于域宽时,使用什么字符进行填充。2022-11-1192北京邮电大学电信工程学院计算机技术中心setw(n)和setfill(c)例1:coutsetw(8)as
40、etw(8)bendl;输出结果:例2:coutsetfill(*)setw(5)aendl;输出结果:#include#include using namespace std;void main()coutsetfill(*)setw(2)n setw(3)n setw(4)n setw(5)n setw(6)n setw(7)n setw(8)n;*2.5 2.5 I/O流控制流控制注意1 除了setw()控制符外,其他控制符一旦设置,则对其后的所有输入输出产生影响。而setw()控制符只对其后输出的第一个数据有效,对其他数据没有影响,所以如下代码:coutsetw(8)a bendl;输
41、出结果:_ _ _ _ _ _ _ab2022-11-1195北京邮电大学电信工程学院计算机技术中心2.5 2.5 I/O流控制流控制注意2 setw()的默认为setw(0),意思是按实际输出。如果输出的数值占用的宽度超过setw(int n)设置的宽度,则按实际宽度输出。例如:float f=0.12345;coutsetw(3)fendl;0.123452022-11-1196北京邮电大学电信工程学院计算机技术中心2.5 2.5 I/O流控制流控制3、I/O流的格式控制 C+默认输出浮点数的有效位为6位,那么要想控制输出的数据的长度,该如何呢?比如:float f=3.1234567;如
42、何让显示结果为3.12?C+提供了setprecision(int n)可以控制显示浮点数的有效位。2022-11-1197北京邮电大学电信工程学院计算机技术中心#include#include using namespace std;void main()float f=17/7.0;coutfendl;coutsetprecision(0)fendl;coutsetprecision(1)fendl;coutsetprecision(2)fendl;coutsetprecision(3)fendl;coutsetprecision(6)fendl;coutsetprecision(8)fe
43、ndl;2.428572.4284722.42.432.428572.42857152.5 2.5 I/O流控制流控制3、I/O流的格式控制 如何控制小数的位数?setiosflags(ios:fixed)控制符是用定点方式表示浮点数,将setprecisi on(i nt n)和setiosflags(ios:fixed)结合,可以使用setprecision(int n)控制小数点右边小数的个数。2022-11-1199北京邮电大学电信工程学院计算机技术中心#include#include using namespace std;void main()float f=17/7.0;cout
44、setiosflags(ios:fixed);coutsetprecision(0)fendl;coutsetprecision(2)fendl;coutsetprecision(3)fendl;coutsetprecision(4)fendl;22.432.4292.42862.5 2.5 I/O流控制流控制3、I/O流的格式控制 如何控制指数表示的小数个数?setiosflags(ios:scientific)控制符使用指数方式显示浮点数,将setprecision(int n)和setiosflags(ios:scientific)结合,可以使用setprecision(int n)控制
45、指数表示法的小数位数。2022-11-11101北京邮电大学电信工程学院计算机技术中心#include#include using namespace std;void main()float f=17/7.0;coutsetiosflags(ios:scientific);coutsetprecision(2)fendl;coutsetprecision(3)fendl;coutsetprecision(4)fendl;2.43e+0002.429e+0002.4286e+000总结1、基本数据类型有哪些?2、如何定义和使用变量和常量?变量和常量的异同?3、运算符的优先级?4、数据类型如和转化?5、I/O流的使用技巧