C++02数据类型与表达式_第1页
C++02数据类型与表达式_第2页
C++02数据类型与表达式_第3页
C++02数据类型与表达式_第4页
C++02数据类型与表达式_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

1、 本章内容 数据类型 数据的分类、表示与存储 运算分量 常量与变量 运算表达式 运算符、表达式 输入输出 标准、字符与流main( ) int a, b, sum; a=123; b=456; sum=a+b; printf(“%dn” , sum) ; 第2章 C程序设计基础为什么要数据类型?01234n-11.方便内存操作,减少内存碎片2.方便检验程序中的错误要把要把1存储到内存:存储到内存: 把把100存储到内存:存储到内存:1100100把把100存储到内存:存储到内存:11111010002.1 数据类型数据类型一、数据类型一、数据类型main( ) int a, b, sum; a

2、=123; b=456; sum=a+b; printf(“%dn” , sum) ; main( ) int a, b, sum; a=123; b=456; sum=a+b; printf(“%dn” , sum) ; 二、基本类型的二、基本类型的 标识符标识符与与常数形式常数形式类型型名称类型标识符变量说明常数书写形式普通整型intint a;int x,y;短整型shortshort b,c=123;长整型longlong d=22;普通整型unsigned intunsigned int e, f;短整型unsigned shortunsigned short g;长整型unsign

3、ed longunsigned long h;单精度型floatfloat r, s;双精度型doubledouble q=22.2;charchar c2=a;unsigned charunsigned char c3=362;无类型标识符用数组存储 abcdEFG a b 3 ?101 65的八进制x41 65的十六进制有符号整型无符号整型123 -123123L -123l0277 -0277027L -0277l0X8F -0 x8f0X8FL -0 x8fl3.14 3.14L0.0314e2字符串字符型有符号无符号整型实型一、变量一、变量main( ) int a, b, sum;

4、 a=123; b=456; sum=a+b; printf(“%dn” , sum) ; 为什么要定义变量为什么要定义变量 如何定义变量如何定义变量(先设计,然后用先设计,然后用C+描述)描述) 定义变量时要注意什么定义变量时要注意什么2.2 常量与变量常量与变量 一、变量一、变量1、变量定义、变量定义语法:语法:;例如:int m,t; /初值不确定m=m+1;/用法不妥,m原值不确定m=8;m=m+1;int n=12;/定义变量且初始化t=m;m=n;n=t;/ 交换m、n存储的值m=n;n=m;/ m、n的值能交换吗?l变量是存储数据的内存单元,在程序运行时刻其值可被改变。l变量定义

5、是为其确定类型,在编译时刻为其分配内存单元。使用变量必须首先定义。 程序举例:输入两整数,交换后输出。main( ) int a, b, sum; a=123; b=456; sum=a+b; printf(“%dn” , sum) ; 一、变量一、变量main( ) int a, b, sum; a=123; b=456; sum=a+b; printf(“%dn” , sum) ; 2. 变量三要素变量三要素一个变量具有三个要素:类型、名称、值. 类型决定了系统为该变量所分配的存储单元的大小,如变量sum:long sum=0;sum占用sizeof(long)个字节的存储单元。 名称用来

6、代表具体的存储单元,能够在程序中方便访问该存储单元。在定义变量时,变量名能够反映其用途或者类型信息,让程序阅读者容易理解程序的功能,同时最好给变量一个初始值。 值是变量对应存储单元中所存储的数据,变量的值是可以改变的3 3、变量命名规范、变量命名规范l唯一命名,见名知义。变量唯一命名,符合“标识符”的定义,尽量见名知义;l标识符由字母、数字、下划线组成,并且只能由字母或下划线开头;l避免超长冲突。变量名不要超长(一般7-8个字符),否则会截断多余字符,引起同名冲突;l标识符中的字母大小写敏感。变量名中的字母大小写是敏感的(一般用小写);l避免使用保留字。变量名不要使用C语言的保留字(系统赋于特

7、定含义的标识符,如if、for、while、do等)。main( ) int a, b, sum; a=123; b=456; sum=a+b; printf(“%dn” , sum) ; 二、常量二、常量1、直接常量、直接常量直接写在表达式中的常数(字面常量)。例如:int r,s; r=12; s=3*r*r;整型常量:12 12 12L -12l 12u 12ul 027 -027 -027L 0X8A -0 x8aL 实型常量:3.14 0.314e1 314e-2 -3.14L 字符常量(含转义符):A a 101 x41 n字符串常量:”Abcd” ”A” ”123” “-12”注

8、意:程序中,常数由字面形式决定其类型;常数用多了影响程序通用性注意:程序中,常数由字面形式决定其类型;常数用多了影响程序通用性(尽量使用符号常量或变量)。(尽量使用符号常量或变量)。main( ) int a, b, sum; a=123; b=456; sum=a+b; printf(“%dn” , sum) ; main( ) int a, b, sum; a=123; b=456; sum=a+b; printf(“%dn” , sum) ; main( ) int a, b, sum; a=123; b=456; sum=a+b; printf(“%dn” , sum) ; 2 2、符

9、号常量、符号常量符号名表示常数(1)由 #define定义符号常量#define PI 3.14; /PAI宏名,习惯大写float r,s; / r、s为变量,其值可变s = PI*r*r; /编译时PAI被替换为.14PAI=33.33;X /禁止对符号常量赋值(2)由const定义符号常量(c+中使用)const float PI=3.1416;/PI为符号常量float r,s;s = PI * r * r;/ PI值恒定不变注意:符号常量习惯采用大写,使用好处是能做到“一改全改”。2.3 运算符与表达式运算符与表达式表达式表达式是由是由运算符运算符和和运算量运算量组成的组成的有意义有

10、意义的的计算计算式子式子。例如:数学中。例如:数学中 3.14 X R2 ( -b + )2a2 b3 在程序中:在程序中:如何写成表达式?如何写成表达式?(a+b+c)4ac-b2c)-b)(s-a)(s-s(s21main( ) int a, b, sum; a=123; b=456; sum=a+b; printf(“%dn” , sum) ; 2.3 运算符与表达式运算符与表达式2.3.1 赋值运算赋值运算一、赋值表达式一、赋值表达式语法:语法: = 表达式的值赋给变量(存储到变量对应的存储单元中)。为赋值运算符,优先级最低。l int m,n; m=2; m=m+1; n=n+1;l

11、 a=3.14赋值表达式的值是3.14,a的值为3.14;l a=b=c=5自右向左结合, a、b、c的值都是5,整个赋值表达式的值是5;a=(b=(c=5)l a=5+(c=6)先求c=6,赋值表达式值为6,然后计算5+6,最后使a的值为11;l if (a=8) t=a;先求赋值表达式的值为8,且a的值也为8;再判断80是否成立,如果成立t的值被赋于,否则t的值不变。 每种表达式都会返回一种类型的值。二、(赋值)表达式语句表达式后跟分号就构成为语句: ;r=12.3 ; s=3.14*r*r ; 赋值表达式语句,是语句单位3.14*r*r; 合法的表达式语句,但无意义sqrt(r); 函数

12、表达式语句a+b*c; 算术表达式语句,计算无意义xa&xb; 逻辑表达式语句,计算无意义a=b=c=5; 混合运算,自右向左结合注意:实型赋给整型,舍弃实数的小数部分;整型赋给实型,数值不变,添加小数部分为0。int m, n; float x, y; m=123.456; x=3;m=123; x=3.14; n=x; y=m;学习和编写表达式时注意的问题学习和编写表达式时注意的问题 运算符的类型,以及所带操作数类型运算符的类型,以及所带操作数类型 表达式计算顺序和过程表达式计算顺序和过程u 运算符的优先级:不同优先级的运算符同时运算符的优先级:不同优先级的运算符同时在一个表达式中

13、出现时,按照优先级从高到在一个表达式中出现时,按照优先级从高到低顺序计算。低顺序计算。u 运算符的结合方向:相同级别的运算在同一运算符的结合方向:相同级别的运算在同一个表达式中出现时,运算方向(从左到右,个表达式中出现时,运算方向(从左到右,从右到左)从右到左) 表达式返回值的类型表达式返回值的类型2.3.2 算术运算算术运算一、基本算术运算符一、基本算术运算符 运算符: +、-、*、/、%(求余);没有幂运算, xy由pow(x,y)函数计算;优先级: *、/、%同级(高),+、-同级(低);结合性:自左向右。例如:float a,b;char c1=A,c2;a-b*c等价于 a -(b

14、* c)a-b+c等价于 (a - b )+ c1/3*(a+b+c)结果为0a%b错;应为:(int)a%(int)b(int)a%(int)b8+3.5结果为11.5,实型c2=c1+4;c2的值是E二、自反算术赋值运算符复合运算符l a+=b等价于a=a+bl c=b*=a+2等价于b=b*(a+2),c=bl x*=y+8等价于x=x*(y+8)l x%=3等价于x=x%3规则:任何基本算术运算符都可与赋值运算符复合成自反赋值运算符;如自反加赋值(+=)、自反减赋值(-=)、自反乘赋值(*=)、自反除赋值(/=)、自反模赋值(%=);优先级:与赋值运算符同级(最低);结合性:自右向左;

15、使用目的:优化程序代码,提高执行效率。三、自加、自减运算符例例1 1:使:使i i的值加的值加1 1或减或减1 1的运算的运算+i;i+;等价于i=i+1; -i;i-;等价于i=i-1;例例2 2:自加(减)与引用的顺序:自加(减)与引用的顺序int i,j; i=3; j=+i*5;/先使i为4,后使j为20 i=3; j=i+*5;/先使j为15,后使i为4 i=3; i+;/仅使i为4,无先后问题(1)(1)结合方向:自右向左; (2)(2)自加(减) 只适合整型变量,不能是表达式或常数。如5+;(x+y)+;都是错误的(char c=a;c+;行吗?)行; (3)(3)前缀自加(减)

16、:先自加(减),后引用; 后缀自加(减):先引用,后自加(减)。int a=2,b;b=+a+1;先使a为3,后使b b为4int a=2,b;b=a-+1; 先使b为3,后使a为1int a=2,b=2,c; c=a+b; 应理解成(a+)+b,结果:c为4,a为3,b不变;当出现难以区分的若干个+或-组成运算符时,语言规定,自左向右取尽可能多的符号组成运算符。int a=2,b=2,c; c=a-b;应理解成(a-)-b,结果:c为为0,a为1,b不变。实际运用时:尽量简单,使用括弧隔开,避实际运用时:尽量简单,使用括弧隔开,避免二义性。免二义性。举例:main( ) int a, b,

17、sum; a=123; b=456; sum=a+b; printf(“%dn” , sum) ; 四、正负号运算符如:-a*b; 等价于:a = 0-a;a*b;规则:规则:l正负号运算符是单目运算符,优先级高于*、/。l结合方向是“自右向左”;main( ) int a, b, sum; a=123; b=456; sum=a+b; printf(“%dn” , sum) ; 五、其它运算符其它运算符取地址运算符(&):scanf(“%d%d”,&a,&b);强制类型转换符(一次有效)(类型标识符)int m=4,n=5;float y;y=m/n;y=(float

18、)m/n;语法都对float a=4,b=5,y; y=a%b;语法错 y=(int)a%(int)b;语法对int m=4,n;n=sqrt(m);n=sqrt(double)m);语法都对逗号运算符(逗号表达式返回最右边的子表达式值)a=1,b=2,c=xa+b;功能等价于a=1;b=2;c=xa+b;if (a=1,b=2,c=xa+b)x+; 功能等价于 r=(a=1,b=2,c=xa+b); if (r) x+;main( ) int a, b, sum; a=123; b=456; sum=a+b; printf(“%dn” , sum) ; 求字节数运算符 sizeof( ) s

19、hort int m; m=sizeof(m); printf(“short m: %d bytesn”,sizeof(m); printf(“long: %d bytesn”,sizeof(long); printf(“int 88:%d bytesn”,sizeof(88); printf(“32769 :%d bytesn”,sizeof(32769);main( ) int a, b, sum; a=123; b=456; sum=a+b; printf(“%dn” , sum) ; main( ) int a, b, sum; a=123; b=456; sum=a+b; print

20、f(“%dn” , sum) ; 表达式中的运算量可以是混合类型的,但系统在表达式中的运算量可以是混合类型的,但系统在执行运算时仍要转换成类型相同的数据。执行运算时仍要转换成类型相同的数据。例如:char ch; int i, result; float f; double d;.result = ch / i + f * d ( f + i ) ; 结果类型?类型转换规则:类型转换规则:自动转换强制转换2.3.3 不同类型混合运算一、自动转换自动转换发生时刻:l表达式运算时算术自动转换;l赋值运算时赋值自动转换;l函数引用时函数引用自动转换;l输出格式限制时输出自动转换?main( ) in

21、t a, b, sum; a=123; b=456; sum=a+b; printf(“%dn” , sum) ; 1、算术自动转换转换规则:“先必转”和“后提升”。l先必转: char、short必转为int; unsigned char、unsigned short必转为unsigned int; float 必转为double;l后提升:必转后剩下的int、unsigned int、long、unsigned long、 double五种类型,再根据运算符需要向高端类型提升。main( ) int a, b, sum; a=123; b=456; sum=a+b; printf(“%dn

22、” , sum) ; 例如:char ch ;int i , result ; float f ;double d ;.result = ch / i + f * d ( f + i ) ;后提升:i先必转:ch、f doublefloatlongunsignedintchar,short低高main( ) int a, b, sum; a=123; b=456; sum=a+b; printf(“%dn” , sum) ; 2、赋值时的自动转换根据赋值对象的类型:可能提升,可能降格,也可能得到错误结果。例如:int m ; unsigned int n ;float a , b ; m =

23、a/b ; /巧妙地实现取整运算 .m += a + b ; /等价于:int(double)m +(double)a+(double)bm = -1 ;n = m ; /矛盾赋值, n的值为很大的整数(得到错误结果)main( ) int a, b, sum; a=123; b=456; sum=a+b; printf(“%dn” , sum) ; 3、函数引用时的自动转换实参与形参结合时隐式转换。 例如:int m=9 ; float x; x = sqrt( m ) ; 语法允许,参数结合时整型m自动转换为double型,最后x的值为整数3.0。main( ) int a, b, sum

24、; a=123; b=456; sum=a+b; printf(“%dn” , sum) ; 4、输出时的自动转换?格式转换符与输出数据类型相一致,否则得到错误结果(不提升,不降格)。例如:printf( “%dn” , 3.14 ) ; /输出 31457printf( “%un” , 3.14 ) ; /输出 34079printf( “%fn” , 100 ) ; /运行时刻出错printf( “%un” , -1 ) ;/输出 65535经验:根据输入/输出数据的类型,严格选用相容的格式匹配符。main( ) int a, b, sum; a=123; b=456; sum=a+b;

25、printf(“%dn” , sum) ; 自动转换注意事项:l负数转换为无符号数时,将丢失符号位功能,得到不正确的数据;如:int m; unsigned int um; m=-2; um = m; /um为何值?小心!l降格转换时,数据的正确性受限于目标类型的有效范围限制。如:int m; float x; x=3276789.0; m = x; /m为何值?小心!main( ) int a, b, sum; a=123; b=456; sum=a+b; printf(“%dn” , sum) ; 二、强制转换将变量从一种类型强制转换成另一种类型,满足表达式、函数或I/O的需要。 语法:(

26、类型标识符)float a = 12.8 , b = 3.6 ; int m=1 ;printf( “%dn” , a%b ) ;/有错printf( “%dn” , (int)a%(int)b) ;/正确 printf( “%fn” , m/3 ) ;/输出0.0printf(“%fn”,m/3.0)或printf(“%fn”,float(m)/3); /输出0.333注意事项:l 各种类型标识符都可以用作强制类型转换符;l 对变量作了强制类型转换后,其原来类型不变(一次有效)。BOOL运算包括关系、逻辑、条件运算,运算结运算包括关系、逻辑、条件运算,运算结果是逻辑值(果是逻辑值( 真真/假

27、,假,TRUE/FALSE,C中为中为 1 / 0 )(1 1)关系运算符:)关系运算符: 、=、 、=bab;a=ba=b;( (b b* *b-4b-4* *a a* *c)dc)d;a+b=c+da+b=c+d;a!=ba!=bl 优先级:优先级: 、=、 、=同级同级 大于 = = =、!=!=同级;同级;l 结合性:自左向右。结合性:自左向右。2.3.4 关系运算( P.56)(2) 关系表达式关系表达式 用关系运算符连接算术表达式,叫关系表达式。关系表达式的值是逻辑值( C中用整数表示) : 成立取值成立取值(真真),不成立取值,不成立取值(假假)。l int a,b,c,d;l

28、a=1;b=5;cout (ab) a) (b=a) b=c; /d=(ab)=c)l a=1; b=5; c=6; cout (ab0) endl;(2) 关系表达式关系表达式浮点数之间比较是否相等:l float x,y;.;if (x=y);/z=y不可靠if (fabs(x-y)1e-3); /强力推荐逻辑常量与逻辑变量l C语言没有提供逻辑型数据语言没有提供逻辑型数据,关系表达式的值,关系表达式的值(真或假真或假)分别用分别用数值数值1和和0表示。表示。C+增加了逻辑型数据增加了逻辑型数据,逻辑型常量有,逻辑型常量有false(假假)和和true(真真)。l 逻辑型变量要用类型标识符

29、逻辑型变量要用类型标识符bool来定义来定义,它的值只能是,它的值只能是true和和false之一。如:之一。如: bool found,flag=false; /定义逻辑变量found和flag found=true;/true赋给逻辑变量foundl 编译处理时,编译处理时,false处理为处理为0,true处理为处理为1。因此,逻辑型数。因此,逻辑型数据可以与数值型数据进行算术运算。据可以与数值型数据进行算术运算。l 一个非零整数赋给逻辑型变量,则按一个非零整数赋给逻辑型变量,则按“真真”处理处理。如:如:flag=123; /赋值后赋值后flag的值为的值为truecoutflag;/

30、输出为数值输出为数值1。逻辑常量与逻辑变量判断以下b的输出:bool b = 100;cout b endl; /1简单的简单的if语句语句语法语法1: if(if()语句;语句;执行规则:如果执行规则:如果 返回返回 true,则执行后,则执行后面的语句。否则不执行。面的语句。否则不执行。语法语法2: if()语句; 执行规则:如果执行规则:如果 返回返回 true,则执行后,则执行后面的语句。否则不执行。其中语句可以有多条。面的语句。否则不执行。其中语句可以有多条。简单的简单的if语句语句语法语法3: if(if()语句语句1 1;elseelse语句语句2 2;执行规则:如果执行规则:如

31、果 返回返回 true,则执行后,则执行后面的语句面的语句1。否则执行语句。否则执行语句2。Void main ( void ) int a, b, c; scanf( “%d%d”,&a,&b); if (ab) c=a; else c=b; printf( ”max=%dn“,c); 例例1.1.输入语数外各门成绩,总分大于输入语数外各门成绩,总分大于250250分的,输出各门分的,输出各门分数,以及总分。否则不输出。分数,以及总分。否则不输出。例2.输入一个温度值,若温度高于某个指定的阀值时,进行报警。例例3.3.编程求一元二次方程的根。编程求一元二次方程的根。例4.输入

32、两个数,输出最大的.例5.编写一个简单的计算器程序,实现用户输入操作数和四则运算符,输出计算结果。2.3.4 逻辑运算(逻辑运算( P.56)&逻辑与,双目运算逻辑与,双目运算(1)逻辑运算符 |逻辑或,双目运算逻辑或,双目运算! ! 逻辑非,单目运算逻辑非,单目运算优先级: !(非) &(与) |(或) !算术运算关系运算&|赋值运算结合性:自左向右真值表:ab!a!ba&ba|b真假真假假假真真真假假假假假真真假假真真真假真真运算规则运算规则l &:两个运算量的值都为:两个运算量的值都为“真真”时,结果才为时,结果才为“真真”,否则为,否则为“假假”

33、。如:。如:1 1&1,1&0,0&1,0&0l |:两个运算量的值都为:两个运算量的值都为“假假”时,结果才为时,结果才为“假假”,否则为,否则为“真真”。如:如:1 | 1, 1 | 0, 0 | 1, 0 | 0l ! ! :运算量的值为:运算量的值为“真真”时,运算结果为时,运算结果为“假假”;运算量的值;运算量的值为为“假假”时,运算结果为时,运算结果为“真真”。 如:如: !1 !1 , !0 0例如:int a=5,b=3,c=8,d=7;lab&cd 等价于(ab)&(cd)l!b=c|da 等价于(!b)=c)|(dc&

34、a+bc)&(a+b)b)(2)逻辑表达式 l !的值为;!1&1 值为0l 当a=3、b=5时: a&b的值为;!a&b的值为0;!a&!b的值为0a|b的值为1;!a|b的值为1;!a|!b的值为用逻辑运算符连接起来的式子叫逻辑表达式。 逻辑运算结果为True/False,C中为1/0;即C用整数表示逻辑值:为假,为假,1为真,非为真,非0也为真也为真。(3)逻辑表达式 l a&b&c为例:只有只有a a为真时,才判别为真时,才判别b b;只有;只有a a、b b都都为真时,才判别为真时,才判别c c。如:a=b=c=-1;+a&am

35、p;+b&+c;cout (+a&+b&+c) endl; /0cout a b c; /0 -1 -1l a|b|c为例:只有只有a a为真时,就不判别为真时,就不判别b b、c;c;若若a a假、假、B B真,就不判别真,就不判别c c;例如:a=c=-1;b=1;cout (+a|b+|+c) endl; /1cout a b -2&x-2&y1( (year%4=0&year%100!=0year%4=0&year%100!=0) )|( (year%4=0&year%400=0year%4=0&year%400=

36、0) )a=x=a&x=b 很好的描述注意区别:abc 与 ab&bc或或 year%4=0&year%4=0&( (year%100!=0|year%400=0year%100!=0|year%400=0) )阅读下列程序例: 0, 0 1, 00,1 1,0 int main(void) char c=k ;int i=1 , j=2 , k=3;float x=3e+5 , y=0.85;printf(%d,%dn, !x|!y , !x );printf(%d,%dn , x|i&j-2 , ij&xy);printf(%d,%dn ,

37、i=5&c&+j, x+y|i+j+k ); printf(%d,%dn , x|j-, !x|-i); return 0; 2.3.4 条件运算条件运算语法: ? :l运算功能: 先求表达式1的值v1;如果v1为真, 则求表达式2的值v2,整个表达式的值为v2 ;如果v1为假,则求表达式3的值v3,整个表达式的值为v3 。l?运算符是三目运算符,具有if-then-else功能例如:l选择a、b中较大的数:l选择a、b、c中较大数:m=ab?a:b ; m= (max=ab?a:b) c?max:c;2.4 标准输入标准输入/输出函数输出函数p.571、printf()函数头

38、文件为:头文件为:stdio.h printf (, ); l表达式表:输出对象,逗号间隔的表达式;l格式字符串:由原样输出的字符、“%格式字符” 、 “转义字符” 等组成;例如:int m=22; float a=22.2,b=33.3; printf(%d,%f,%fn,m,a,b); printf(a=%dtb=%ftc=%fn,m,a,b);dxoucsefg%十六进制无符号整数不带符号十进制整数十进制整数指数形式浮点小数单一字符字符串八进制无符号整数小数形式浮点小数e和f中较短一种百分号本身int a=567;printf ( “%d”,a);int a=255;printf(“%x

39、”,a);int a=65;printf(“%o”,a);int a=567;printf(“%u”,a);char a=65;printf(“%c”,a);printf(“%s”,“ABC”);float a=567.789;printf(“%e”,a);float a=567.789;printf(“%f”,a);float a=567.789;printf(“%g”,a);printf(“%”);567ff101567AABC5.677890e+02567.789000567.789%说明 格式字符要用小写 格式字符与输出项个数应相同,按先后顺序一一对应格式控制符表格式控制符表2、sca

40、nf()函数头文件为:头文件为:stdio.hscanf(, );int main( ) int m; float a,b; printf(Please input m a b :) ; scanf(%d%f%f,&m,&a,&b); /22 22.2 33.3 scanf(%d,%f,%f ,&a,&b,&c); /22,22.2,33.3 scanf(m=%d,a=%f,b=%f,&m,&a,&b); /m=22,a=22.2,b=33.3 printf(m=%dta=%ftb=%fn,m,a,b); printf(%

41、dt%ft%fn,m,a,b); return 0;格式转换与输入输出流缓冲区概念Void main(void) int m; float a,b;scanf(%d%f%f,&m,&a,&b); /22 22.2 33.3scanf(%d,%f,%f ,&m,&a,&b); /22,22.2,33.3scanf(“m=%d,a=%f,b=%f,&m,&a,&b); /m=22,a=22.2,b=33.3printf(“m=%dta=%ftb=%fn,m,a,b);printf(%dt%ft%fn,m,a,b); 内存(字节

42、编址)22 22.2 33.3m=22 a=22.2 b=33.3输入缓冲区(输入字符流)键盘设备数据文件按需、格式读字符流,并转换为。输出缓冲区(输出字符流)输出设备数据文件2转换为10,并按格式写字符流。的二进制的二进制.2的二进制存储的二进制存储.的二进制存储的二进制存储22,22.2,33.3m=22,a=22.2,b=33.322 22.2 33.32.62.6 流输入输出流输入输出p.50p.50l C和和C+本身都没有为输入和输出提供专门的语句,本身都没有为输入和输出提供专门的语句,而是在编译系统提供的而是在编译系统提供的I/O库中定义的。库中定义的。l C+的的I/O采用采用“

43、流流”(stream)的方式,的方式,cin、cout和和流运算符是定义在流运算符是定义在C+的输入输出流库中,使用它的输入输出流库中,使用它们时必须使用预处理命令:们时必须使用预处理命令:#include 。流进行输入输出的过程示意图:流进行输入输出的过程示意图:l 一个一个cout语句可以分写成若干行。语句可以分写成若干行。如如:cout“This is a simple C+ program.”endl;可以写成可以写成 cout“This is ”/注意行末尾无分号注意行末尾无分号“a C+”“ program.”endl; /语句最后有分号语句最后有分号也可写成多个也可写成多个cou

44、t语句,即语句,即coutThis is ; /语句末尾有分号语句末尾有分号cout a C+ ;cout program.;coutendl;以上以上3种情况的输出均为种情况的输出均为This is a simple C+ program.l在用在用cout输出时,系统会自动判别输出数据输出时,系统会自动判别输出数据的类型,按相应的类型输出。如:的类型,按相应的类型输出。如:int a=4; float b= 345.789; char c=a;coutatbtcabcd;可以写成:可以写成: cina /注意行末尾无分号注意行末尾无分号 b c d; 也可以写成:也可以写成:cina;ci

45、nb;cinc;cind;以上以上4种情况都可以从键盘输入:种情况都可以从键盘输入: 1 2 3 4 也可以分多行输入数据:也可以分多行输入数据:1 2 3 4 l cin输入时,系统也会根据变量的类型从输入流中提输入时,系统也会根据变量的类型从输入流中提取相应长度的字节。如有:取相应长度的字节。如有:char c1,c2;int a;float b;cinc1c2ab;如果输入如果输入1234 56.78 流中使用控制符流中使用控制符*p.50l 一般使用一般使用cout和和cin时的默认格式。有特殊要求时,使用控制时的默认格式。有特殊要求时,使用控制符符(表表3.1) ,控制输出数据宽度、

46、精度对齐等。但除了要包含,控制输出数据宽度、精度对齐等。但除了要包含iostream头文件外,还要包含头文件外,还要包含iomanip头文件。头文件。举例举例1: 输出双精度数。输出双精度数。double a=123.456789012345;(1) couta;/输出: 123.456 (2) coutsetprecision(9)a;/输出:123.456789 (3) coutsetprecision(6);/恢复默认格式(精度为6)(4) cout setiosflags(ios fixed);/输出:123.456789(5) coutsetiosflags(ios fixed)setprecision(8)a;/输出: 123.45678901(6) coutsetiosflags(ios scientific)a;/输出: 1.234568e+02(7) coutsetiosflags(ios

温馨提示

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

评论

0/150

提交评论