C++程序设计-cchp2-数据及表达式.ppt

上传人(卖家):三亚风情 文档编号:3376729 上传时间:2022-08-25 格式:PPT 页数:120 大小:1.51MB
下载 相关 举报
C++程序设计-cchp2-数据及表达式.ppt_第1页
第1页 / 共120页
C++程序设计-cchp2-数据及表达式.ppt_第2页
第2页 / 共120页
C++程序设计-cchp2-数据及表达式.ppt_第3页
第3页 / 共120页
C++程序设计-cchp2-数据及表达式.ppt_第4页
第4页 / 共120页
C++程序设计-cchp2-数据及表达式.ppt_第5页
第5页 / 共120页
点击查看更多>>
资源描述

1、第2章 数据类型与表达式2.1 C+的数据类型2.2 常量2.3 变量2.4 C+的运算符2.5 算术运算符与算术表达式2.6 赋值运算符与赋值表达式2.7 逗号运算符与逗号表达式2.1 C+的数据类型#includeiostream.h#include using namespace std;using namespace std;int int main()/main()/求圆的周长和面积求圆的周长和面积 double r,girth,area;double r,girth,area;const double pi=3.1415;const double pi=3.1415;cout co

2、ut Please input radius:n;r;r;girth=2 girth=2*pi pi*r;r;area=pi area=pi*r r*r;r;cout radius=r endl cout radius=r endl;cout girth=girth endl cout girth=girth endl;cout area=area endl cout area=area r;r;girth=girth=2 2 *pi pi*r;r;area=pi area=pi*r r*r;r;cout cout radius=radius=r endl r endl;cout cout g

3、irth=girth=girth endl girth endl;cout cout area=area=area endl area=314.159 0.314159e3+3+.3141592323位位7 7位位2实型数据的存储形式 位数与C语言系统有关1.普通的字符常量o用单引号括起来的一个字符。a#%D 4o注意:n只包括一个字符,如AB 是不合法的。n区分大小写字母,如A 和 a 是两个不同的字符常量。n字符常量都是char类型,在内存中占一个字节。2.2.3 字符常量o附录A 常用字符与ASCII代码对照表每个字符对应一个 ASCII代码(0255整数);包括有:n控制字符:如回车,

4、退格,响铃等n普通字符:ASCII码从32至126对应的字符o控制字符如何表示?-可用转义字符表示2.转义字符常量转义字符转义字符 字符序列字符序列 以“”为前缀,表示改变后面字符序列使其成为控制符或字符值。字符序列共有两类:o单字符o整数值C+常用转义字符 1.3.3 1.3.3 基本类型基本类型 1.3 C+的基本数据类型与存储形式名称名称字符形式字符形式值值空字符(Null)000X00 0换行(NewLine)nn 0X0A 10换页(FormFeed)f 0X0C 12回车(Carriage Return)r 0X0D 13退格(BackSpasc)b 0X08 8响铃(Bell)a

5、 0X07 7水平制表(Horizontal Tab)tt 0X09 9垂直制表(Vertical Tab)v 0X0B 11反斜杠(backslash)0X5C 92单引号(single quote)0X27 39双引号(double quote)0X22 342.转义字符常量C+常用转义字符 1.3.3 1.3.3 基本类型基本类型 1.3 C+的基本数据类型与存储形式名称名称字符形式字符形式值值1-3位八进制数所代表的字符ddd1-2位十六进制数所带代表的字符xhh2.转义字符常量例如:英文字母 A 的三种表示方法:A 101 A的ASCII码是65=(101)8 x41 =(41)16

6、字符#的三种表示方法:173#的ASCII码是123=(173)8 x7B =(7B)16C+常用转义字符 1.3.3 1.3.3 基本类型基本类型 1.3 C+的基本数据类型与存储形式名称名称字符形式字符形式值值1-3位八进制数所代表的字符ddd1-2位十六进制数所带代表的字符xhh2.转义字符常量又如:字符 的三种表示方法:的ASCII码是34=(42)8 =(22)1642 x22o如:字符常量a 和 bo内存存放的是 a 的ASCII码97,b 的ASCII码98,3.字符数据在内存中的存储形式1000011001000110abo每个字符对应一个代码;o内存中占一个字节o C+的字符

7、型与整型数据密切相关,可以用ASCII 值参与算术运算例2.1 将字符赋给整型变量。#include using namespace std;int main()int i,j;/i和j是整型变量 i=A;/将一个字符常量赋给整型变量i j=B;/将一个字符常量赋给整型变量j couti jn;/输出整型变量i和j的值,/n 是换行符 return 0;执行时输出 65 66可以看到:n在一定条件下,字符型数据和整型数据是可以通用的。n但是应注意字符数据只占一个字节。例2.2 将字符数据与整数进行算术运算。#include using namespace std;int main()char

8、c1,c2;/c1和c2是字符型变量 c1=a;/将字符常量赋给变量c1 c2=b;/将字符常量赋给变量c2 c1=c1-32;/c1的值为97-32=65 c2=c2-32;/c2的值为98-32=66 coutc1 c2n;/输出字符型变量的值(字符)return 0;执行时输出 A Bo用双引号括起来的若干个字符是字符串常量,如:abcHello!a+bLiping4.字符串常量o字符串常量abc在内存中占4个字节;o编译系统会在每个字符串之后自动加一个 0 作为字符串结束标志。o 0 的ASCII码值为0,叫空字符字符串常量在内存中例以下字符串常量在内存中各占多少字节?hello101

9、abncd-6个字节,5个字符,最后1个是0-8个字节,7个字符,最后1个是0区分字符常量与字符串常量一个字符:一个字符:a 一个字符串:一个字符串:a path:d:mathex1.c#include int main()cout x07operationt systemn;cout 101 t A 012 ;return 0;例例 注意字符串中的转义字符注意字符串中的转义字符水平制表符(水平制表符(Tab)1.3.3 1.3.3 基本类型基本类型 1.3 C+的基本数据类型与存储形式#include int main()cout x07operationt systemn;cout 101

10、 t A 012 ;return 0;换行符换行符:ASCII:012ASCII:0121.3.3 1.3.3 基本类型基本类型 1.3 C+的基本数据类型与存储形式例例 注意字符串中的转义字符注意字符串中的转义字符#include int main()cout x07operationt systemn;cout 101 t A 012 ;return 0;字符字符A的的ASCII码,码,与与A等价等价1.3.3 1.3.3 基本类型基本类型 1.3 C+的基本数据类型与存储形式ASCII码码-x07,是响铃是响铃,可写成可写成a例例 注意字符串中的转义字符注意字符串中的转义字符o用一个符号

11、名代表一个常量,称为符号常量,例:#define pi 3.14159#define pi 3.14159 /定义符号名pi代表了 3.14159 int main()float r,girth,area;cout r;girth=2*pi*r;/使用符号常量pi,代表3.14159 area=pi*r*r;/使用符号常量pi,代表3.14159 cout radius=r endl;cout girth=girth endl;cout area=area =!=逻辑运算符!&|位运算符|&赋值运算符=及扩展的复合运算符及扩展的复合运算符条件运算符?:逗号运算符,指针运算符*&求字节运算符si

12、zeof强制类型转换符类型类型成员运算符.-下标运算符其他():new delete2.4 C+的运算符o 运算规则o 优先级o 结合性 运算符运算符 右操作数例如:例如:&a!500 *p左操作数 运算符运算符 右操作数例如:例如:a*3xy 条件运算:操作数1?操作数2 :操作数3例如:例如:a?b:c c+运算符 o 按操作数多少分为三种类型:+加法,或单目求正-减法,或单目求负*乘法/除法%求模(求余)基本算术运算符有:2.5 算术运算符与算术表达式2.5.1 基本的算术运算符1.6.1 算术表达式算术表达式 两个操作数都是整型,结果值为整型运算例子结果+2+3;5+10;-13 4;

13、4 7;*3*4;5*11;/8/2;6/4;4/5;-11/2;6/0;%10%3;23%4;5%0;1.6.1 算术表达式算术表达式 除求余%运算外,浮点数可以进行各种算术运算运算例子结果+2.0+.3;5.1+10.0;-13.6 4.2;4.0 7.0;*3.0*4.4;7.5*11.0;/8.6/2.0;5/4.0;-11.0/4.0;6.0/0.0;o算术表达式运算对象包括常量、变量、函数等。如 a*b/c-1.5+abs(-1)o算术运算符的优先级和结合性:两个相邻的运算符先比较优先级,高者先运算;优先级相同时,再按“结合性”决定谁先运算。n先乘除后加减 a+b*c “+”优先级

14、低过“*”,*先运算n同级自左至右(叫左结合性)a+b-c “+”,“-”同级,先左后右2.5.2 算术表达式和运算符的优先级与结合性例例.定义以下不同类型的变量定义以下不同类型的变量:char c=char c=a a;int int i=3;i=3;folat folat f=3.5;f=3.5;double d=5.6;double d=5.6;10+310+3*b b/2/2 c+1 c+1 a a+b b c+i c+i*f ff+c f+c*d-d-b b*3.14 3.14不同类型数据混合运算,系统自动将不同类型转换成同一类型;不同类型数据混合运算,系统自动将不同类型转换成同一类

15、型;C+C+中以下用法均合法:中以下用法均合法:2.5.3 表达式中各类数值型数据间的混合运算 规则:规则:*不同类型的数据要先转换成同一类型,然后进行运算;不同类型的数据要先转换成同一类型,然后进行运算;*是必定的转换;是必定的转换;是不同类型时要转换的方向;是不同类型时要转换的方向;short+char+long+double+float =结果为double型char+long+int =结果为long型char c=a;int i=12;float f=1.23;c+1 /*结果为整型结果为整型*/10+3*b/2 /*结果为整型结果为整型*/c+i*f /*结果为结果为 double

16、 型型*/2.5.3 表达式中各类数值型数据间的混合运算i0+11.6.1 算术表达式算术表达式2.5.4 自增和自减运算符程序设计中,常对变量进行如下操作:i=i+1 i=i-1定义:int i=0;程序设计中,常对变量进行如下操作:i=i+1 i=i-1i+程序设计中,常对变量进行如下操作:i=i+1 i=i-1i+1.6.1 算术表达式算术表达式程序设计中,常对变量进行如下操作:i=i+1 i=i-1i+1.6.1 算术表达式算术表达式 算 符 前 缀 式 后 缀 式 等 价 语 句 自 增+i i i i +i i =i i +1 1 自 减-i i i i -i i =i i -1

17、1 程序设计中,常对变量进行如下操作:i=i+1 i=i-1C+为其提供自增和自减算符为其提供自增和自减算符o自增式和自减式作为独立的表达式,前缀式和后缀式没有区别;i+;+i;o 作为表达式右值时:(1)前缀式 先变量增值,后用变量新值计算表达式例:x=+i;相当于 i=i+1;x=i;(2)后缀式 先用原变量值计算表达式,后变量增值例:x=i+;相当于 x=i;i=i+1;1.6.1 算术表达式算术表达式例:int a=3,b;b=a+;a=,b=b=+a;a=,b=1.6.1 算术表达式算术表达式例:int a=3,b;b=a+;a=4 ,b=3b=+a;a=4 ,b=4 1.6.1 算

18、术表达式算术表达式例:例:int a=3;int b=+a;/相当于相当于 a=a+1;b=a;int c=a+;/相当于相当于 c=a;a=a+1;b=a-;/相当于相当于 b=a;a=a-1;c=-a;/相当于相当于 a=a-1;c=a;+(a+);/错错 (a+)不是变量名不是变量名c=a+b;/错错 a+无法对无法对 b 操作操作c=a+b;/相当于相当于 c=a+b;a=a+1;c=a+b;/(a+)+b 错错注意:注意:编译扫描器优先从左识别算符1.6.1 算术表达式算术表达式注:o自增、自减算符的运算对象只能是整型变量,不能为常量或表达式;例:5+(a+)(x+y)-均为错误1.

19、6.1 算术表达式算术表达式例:i=5;x=(i+)+(i+);x=?i=?(1)x=5+5=10 先计算表达式的值,再自增 (2)i=i+1;i=i+1;即i=71.6.1 算术表达式算术表达式例:i=5;x=(+i)+(i+);x=?i=?(1)i=i+1=6 (2)x=6+6=12 计算表达式的值 (3)i=i+1 即i=7 不要用容易产生歧义的表达式。1.6.1 算术表达式算术表达式o程序编制者利用强制类型转换运算符将一个表达式转换成所需类型。形式:(类型名)(表达式)类型名(表达式)例如:(double)(将a转换成double类型)double(a)(int)(x+y)(将x+y的

20、值转换成整型)int(x+y)(float)(5%3)(将5%3的值转换成float型)(int)x+y (只将x转换成整型,然后与相加)(int)5.5%2 (5%2)2.5.5 强制类型转换运算符例2.4 强制类型转换。#include using namespace std;int main()float x;int i;x=3.6;i=(int)x;/或写成 i=int(x);coutx=x i=i endl;return 0;运算结果:x=3.6 i=3 =赋值运算符赋值运算符;功能功能:将运算表达式的值赋给左边的变量将运算表达式的值赋给左边的变量 优先级优先级:15(低低)赋值表达

21、式:赋值表达式:a=3 b=a i=i+1 c=a*(b+c)变量变量=表达式表达式2.6 赋值运算符与赋值表达式2.6.1 赋值运算符o当赋值运算符两边类型不同或同类型不同长度时,系统自动进行转换;赋值过程中的隐式类型转换:例2.5 将有符号数据传送给无符号变量。#include using namespace std;int main()unsigned short a;short int b=-1;a=b;couta=aendl;return 0;运算结果:a=65535a 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1b 1 1 1 1 1 1 1 1 1 1 1 1

22、1 1 1 1转换原则转换原则:变量变量 =运算表达式运算表达式 目标变量目标变量类型类型 表达式类型表达式类型赋值过程中的隐式类型转换:*整型整型=实型实型 :取整取整 intint a;a;long b;long b;float x=2.3;float x=2.3;double y=3.5;double y=3.5;*实型实型=a=2a=x;=a=2 b=y;b=y;=b=3=b=3 a=y;=a=3 a=y;=a=3a)a)赋值运算符两边不同类型赋值运算符两边不同类型b)b)赋值运算符两边同类型赋值运算符两边同类型,不同长度不同长度*float=doublefloat=double:在取

23、值范围内截取相应的有效位数在取值范围内截取相应的有效位数 float x;float x;double y;double y;y=1.23456789e12y=1.23456789e12x=y;x=y;y=1.23456789e56y=1.23456789e56x=y;/x=y;/*数据溢出数据溢出*/*实型实型(长长)=)=实型实型(短短):以长实型表示并存储:以长实型表示并存储 实型:实型:赋值过程中的隐式类型转换:#include using namespace std;int main()int a=65536;/4个字节short b;/2个字节 b=a;couta=atb=bend

24、l;return 0;输出:a=65536 b=0整型整型(短短)整型整型(长长):截断截断b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 010 00 000 000 00 00 0 0 0#include using namespace std;int main()int a;short b=-1;a=b;couta=atb=bendl;return 0;输出:a=-1 b=-1 整型整型(长长)整型整型(短短):有符号用符号位补满有符号用符号位补满 无符号用无符号用0补满补满b 1 1 1 1 1 1 1 1

25、1 1 1 1 1 1 1 1a 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1#include using namespace std;int main()unsigned int a;unsigned short b=15;a=b;couta=atb=bendl;return 0;输出:a=15 b=15整型整型(长长)整型整型(短短):有符号用符号位补满有符号用符号位补满 无符号用无符号用0补满补满b 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1a 0 0 0 0 0 0 0 0 0 0 0

26、 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1复合赋值运算复合赋值运算 双目算符双目算符 op 的表达式:的表达式:A=A op B 可以缩写成:可以缩写成:A op=Bc=c-kc-=kx=x*(y+8)x*=y+8x=x+3x+=3x=x%3x%=3例:例:2.6.3 复合的赋值运算符 复合赋值运算复合赋值运算 双目算符双目算符 op 的表达式:的表达式:A=A op B 可以缩写成:可以缩写成:A op=BC+C+提供的提供的1010个复合赋值运算符:个复合赋值运算符:用于位运算用于位运算a=a%ba=a/ba=a*ba=a-ba=a+b等价于等价于

27、a/=b+2b*=10a-=b+ca+=5例例a%=b模赋值模赋值%=a=a/(b+2)a/=b除赋值除赋值/=b=b*10a*=b乘赋值乘赋值*=a=a-(b+c)a-=b减赋值减赋值=a=a+5a+=b加赋值加赋值=等价于等价于例例名称名称运算符运算符算术赋值运算算术赋值运算由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”。形式为 如“5”是一个赋值表达式。对赋值表达式求解的过程是:先求赋值运算符右侧的“表达式”的值,然后赋给赋值运算符左侧的变量。一个表达式应该有一个值。赋值运算符左侧的标识符称为“左值”(left value,简写为lvalue)。并不是任何对象都可以作

28、为左值的,变量可以作为左值,而表达式a+b就不能作为左值,常变量也不能作为左值,因为常变量不能被赋值。2.6.4 赋值表达式出现在赋值运算符右侧的表达式称为出现在赋值运算符右侧的表达式称为“右值右值”(right value,简,简写为写为rvalue)。如。如int a=3,b,c;b=a;/b是左值是左值c=b;/b也是右值也是右值赋值表达式中的赋值表达式中的“表达式表达式”,又可以是一个赋值表达式。,又可以是一个赋值表达式。如如 a=(b=5)下面是赋值表达式的例子:下面是赋值表达式的例子:a=b=c=5 (赋值表达式值为(赋值表达式值为5,a,b,c值均为值均为5)a=5+(c=6)(

29、表达式值为(表达式值为11,a值为值为11,c值为值为6)a=(b=4)+(c=6)(表达式值为(表达式值为10,a值为值为10,b等于等于4,c等等于于6)a=(b=10)/(c=2)(表达式值为(表达式值为5,a等于等于5,b等于等于10,c等等于于2)int a=12;a+=a-=a*a 先进行先进行“a-=a*a”的运算,它相当于的运算,它相当于 a=a-(a*a)=12-12*12-132。再进行再进行“a+=-132”的运算,它相当于的运算,它相当于 a=a+(-132)-132-132-264。2.7 逗号运算符和逗号表达式 逗号表达式格式:逗号表达式格式:表达式表达式1,表达式

30、表达式2,表达式表达式E3 ,表达式表达式n 其中,称为逗号运算符,运算级别最低;功能 顺序执行 表达式1、表达式2、表达式3 表达式n,最后获得逗号表达式的值。逗号表达式示例:逗号表达式示例:(1)(1)a=3 a=3*5,a 5,a*4 4(2)(2)(a=3 (a=3*5,a 5,a*4),a+5 4),a+5(3)(3)b=(a=3,6 b=(a=3,6*3)3)(4)(4)b=a=3,6 b=a=3,6*a a15,a=1515,a=156060606015,a=1515,a=1560606060202020203,a=33,a=318181818b=18b=183,a=3,b=33,a=3,b=318181818以下从高到低排列各类运算的优先级单目运算符 乘除运算加减运算赋值逗号再论运算符的优先关系

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(C++程序设计-cchp2-数据及表达式.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|