数据类型与表达式.ppt

上传人:wuy****n92 文档编号:91250633 上传时间:2023-05-24 格式:PPT 页数:58 大小:269.50KB
返回 下载 相关 举报
数据类型与表达式.ppt_第1页
第1页 / 共58页
数据类型与表达式.ppt_第2页
第2页 / 共58页
点击查看更多>>
资源描述

《数据类型与表达式.ppt》由会员分享,可在线阅读,更多相关《数据类型与表达式.ppt(58页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第章数据类型与表达式2.1 C+的数据类型2.2 常量2.3 变量2.4 C+的运算符2.5 算术运算符与算术表达式2.6 赋值运算符与赋值表达式计算机处理的对象是数据,而数据是以内存中的bit的形式存在的,按占bit的不同,分为整数、浮点数、字符等类型。“int a,b,sum;”是声明语句,定义变量a,b和sum为整数类型变量。语言的数据类型包含基本数据类型和构造数据类型。最基本:int(整数)char(字符)float(实数)2.1 的数据类型数据类型基本类型构造类型指针类型引用类型空类型(void)单精度型(float)双精度型(double)长双精度型(long double)短整型

2、(short int)整型(int)长整型(long int)整型字符型(char)浮点型布尔型(bool)枚举类型(enum)数组类型结构体类型(struct)共用体类型(union)类类型(class)布尔型就是逻辑型,空类型就是无值型类型类型标识 字节数值范围整型 signed int 4-2147483648+2147483647无符号整型 unsigned int 4 0 4294967295短整型 short int 2-32768+32767无符号短整型 unsigned short int 2 0 65535长整型 long int 4-2147483648+214748364

3、7无符号长整型 unsigned long int 4 0 4294967295字符型 signde char 1-128+127无符号字符型 unsigned char 1 0 255单精度型 float 4 3.410-38 3.41038双精度型 double 8 1.710-308 1.710308长双精度型 long double 8 1.710-308 1.710308表2.1 数值型和字符型数据的字节数和数值范围说明:(1)整型数据分为长整型(long int)、一般整型(int)和短整型(short int)。在int前面加long和short分别表示长整型和短整型。(2)数据

4、的存储方式为按二进制数形式存储,例如十进制整数85的二进制形式为1010101,则在内存中的存储形式如图2.1所示。(短整型)图2.1(3)在整型符号int和字符型符号char的前面,可以加修饰符signed(表示“有符号”)或unsigned(表示“无符号”)。如果指定为signed,则存储单元中的最高位(bit)用来表示数值的符号。如果指定为unsigned,则数值没有符号,全部二进制位都用来表示数值本身。例如短整型数据占两个字节,见图2.2。图2.2类型类型标识 字节数值范围短整型 short int 2-32768+32767无符号短整型 unsigned short int 2 0

5、65535(4)浮点型(又称实型)数据分为单精度(float)、双精度(double)和长双精度(long double)3种,在Visual C+6.0中,对float分配4个字节,对double和long double分配8个字节。(5)表中类型标识符一栏中,方括号 包含的部分可以省写,如short和short int等效,unsigned int和unsigned等效。2.2 常量2.2.1 什么是常量常量是在程序中不能被改变的量。常量包括两大类,即数值型常量(即常数)和字符型常量。数值常量就是通常所说的常数。1.整型常量(整数)的类型整型常量与整型数据一样,可以分为int,short

6、int,long int以及unsigned int,unsigned short,unsigned long等类别。2.2.2 数值常量2.浮点数(实数)的表示方法在程序中,一个浮点数可以用两种不同的方式表示:(1)十进制小数形式。如21.456,-7.98等。(2)指数形式(即浮点形式)一个浮点数可以写成指数形式,如3.14159,在程序中应表示为:0.314159e1(0.314159101),3.14159e0(3.14159100),31.4159e-1(31.415910-1),用字母e表示其后的数是以10为底的幂。1.普通的字符常量用单撇号括起来的一个字符就是字符型常量。如a,#

7、,%,D都是合法的字符常量。注意:字符常量只能包括一个字符,如AB 是不合法的。字符常量区分大小写字母,如A和a是两个不同的字符常量。撇号()是定界符,而不属于字符常量的一部分。如couta;输出的是一个字母“a”。2.2.3 字符常量2.转义字符常量C+还允许用一种特殊形式的字符常量,就是以“”开头的字符序列。例如,n代表一个“换行”符。“coutn;”将输出一个换行,其作用与“coutendl;”相同。表2.2中列出的以“”开头的字符称为“转义字符”,意思是将反斜杠()后面的字符转换成另外的意义。如n中的“”不代表字母而作为“换行”符。编译系统在见到“”时,会接着找它后面的字符把它处理成一

8、个字符。表2.2 转义字符及其含义字符形式含义 ASCII代码a 响铃 7n 换行,将当前位置换到下一行开头 10t 水平制表(跳到下一个tab位置)9b 退格,将当前位置移到前一列 8r 回车,将当前位置移到本行开头 13f 换页,将当前位置移到下页开头 12v 竖向跳格 11 反斜杠字符“”92 单引号字符 39“双引号字符 340 空字符 03.字符数据在内存中的存储形式及其使用方法将一个字符常量存放到内存单元时,实际上是将该字符相应的ASCII代码(见附录)放到存储单元中。如果字符变量c1的值为a,c2的值为b,则在变量中存放的是a的ASCII码97,b 的ASCII码98,如图2.4

9、(a)所示,实际上在内存中是以二进制形式存放的,如图2.4(b)所示。图2.4特别地,在C+中字符型数据和整型数据之间可以通用。一个字符数据可以赋给一个整型变量,反之,一个整型数据也可以赋给一个字符变量。也可以对字符数据进行算术运算,此时相当于对它们的ASCII码进行算术运算。例2.1 将字符赋给整型变量。#include using namespace std;int main()int i,j;/i和j是整型变量i=A;/将一个字符常量赋给整型变量ij=B;/将一个字符常量赋给整型变量jcouti jn;/输出整型变量i和j的值return 0;执行时输出65 66i和j被声明为整型变量。

10、语句;与语句65;66;等价。因为和的ASCII码分别为65和66.可见:在一定条件下,字符型数据和整型数据是可以通用的。例2.2 字符数据与整数进行算术运算。#include using namespace std;int main()char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;coutc1 c2endl;return 0;程序的作用是将小写字母转换为大写字母。运行结果为A Ba的ASCII码为97,而A的ASCII码为65,每一个小写字母比它相应的大写字母的ASCII代码大32。a-32得到整数65,将65存放在c1中,用cout输出c1(=65)时,由于

11、c1是字符变量,因此输出字符A。4.字符串常量用双撇号括起来的部分就是字符串常量,如abc,Hello!,a+b,Li ping都是字符串常量。字符串常量abc在内存中占4个字节(而不是3个字节),见图2.5。图2.5编译系统会在字符串最后自动加一个0作为字符串结束标志。注意:a和a代表不同的含义,a是字符串常量,a 是字符常量。前者占两个字节,后者占1个字节。请分析下面的程序片段:char c;c=a;?c=a;?/定义一个字符变量/正确/错误,c只能容纳一个字符?字符串常量abcn包含几个字符4个字符,其中“n”是一个转义字符。但它在内存中占5个字节(包括一个“0”字符)。如果希望将“”字

12、符也作为字符串中的一个字符,则应写为”。abcn,包括5个字符,即a,b,c,n。如果有以下输出语句:coutabcnendl;输出:abc,然后换行。coutI say Thank you!n;?输出什么输出什么?输出:I say Thank you!2.2.4 符号常量用一个符号名代表一个常量,称为符号常量,如Pi,e,g。例2.3 符号常量的使用。#define PRICE 30/注意define语句末尾不要加分号int main()int num,total;num=10;total=num*PRICE;couttotal=totalendl;return 0;程序运行结果为 tota

13、l=300使用符号常量的好处是:(1)含义清楚:“见名知义”。(2)在需要改变一个常量时能做到“一改全改”。如#define PRICE 352.3 变量2.3.1 什么是变量在程序运行期间其值可以改变的量称为变量。变量具有个基本要素:名字、类型和值。Int a=3;图2.62.3.2 变量命名规则变量名只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。变量名属于标识符(identifier),标识符用来标识变量、符号常量、函数、数组、类型等实体名字。标识符的名字都必须遵循以上规则。下面列出的是合法的标识符,也是合法的变量名:sum,average,total,day,mo

14、nth,Student_name,tan,BASIC,li_ling下面是不合法的标识符和变量名:M.D.John,$123,#33,3G64,Ling li,C+,Zhang-ling,U.S.A.在命名时应注意以下事项:()大写字母和小写字母是两个不同的字符。因此,sum和SUM是两个不同的变量名。()系统规定的保留字(如main、int、return)不可再作为变量名、函数名、类型名等其它名字使用。()命名变量应尽量做到“见名知义”,这样有助于记忆,又增加可读性。()一般用多个单词构成的名字,常用下划线来分隔单词或者中间单词的第一个字母用大写字母。例如,is_byte或isByte,而不

15、要写成isbyte。2.3.3 定义变量对所有的变量,要“先定义,后使用”。定义变量的一般形式是 变量类型 变量名表列;变量名表列指的是一个或多个变量名的序列。如float a,b,c,d,e;定义a,b,c,d,e为单精度型变量。可以在定义变量时指定它的初值。如 float a=83.5,b,c=64.5,d=81.2,e;/对变量a,c,d指定了初值,b和e未指定初值2.3.4 为变量赋初值允许在定义变量时对它赋予一个初值,这称为变量初始化。初值可以是常量,也可以是一个有确定值的表达式。如float a,b=5.78*3.5,c=2*sin(2.0);表示定义了a,b,c为单精度浮点型变量

16、,对b初始化为5.78*3,对c初始化为2*sin(2.0)。如果对变量未赋初值,则该变量的初值是一个不可预测的值,即该存储单元中当时的内容是不知道的。(各次运行情况可能不同)int a=3;相当于以下两个语句:int a;/指定为整型变量 a=3;/赋值语句,将赋给对多个变量赋予同一初值,必须分别指定,不能写成float a=b=c=4.5;而应写成 float a=4.5,b=4.5,c=4.5;或float a,b,c=4.5;a=b=c;2.3.5 常变量在定义变量时,如果加上关键字const,则变量的值在程序运行期间不能改变,这种变量称为常变量(constant variable)。

17、例如,const int a=3;/用const来声明这种变量的值不能改变,指定其值始终为3在定义常变量时必须同时对它初始化(即指定其值),此后它的值不能再改变。常变量不能出现在赋值号的左边。例如上面一行不能写成const int a;a=3;/常变量不能被赋值必须区别用#define命令定义的符号常量和用const定义的常变量。区别不大符号常量只是用一个符号代替一个字符串,它没有类型,在内存中并不存在存储单元。而常变量具有变量的特征,它具有类型,在内存中存在着以它命名的存储单元,与一般变量不同是常变量的值不能改变。C+的程序员一般喜欢用const定义常变量。2.4 C+的运算符(1)算术运算

18、符+(加)-(减)*(乘)/(除)%(整除求余)+(自加)-(自减)(2)关系运算符(大于)(小于)(等于)(大于或等于)(小于或等于)!(不等于)()逻辑运算符(逻辑与)|(逻辑或)!(逻辑非)()位运算符(按位右移)(按位与)|(按位或)(按位异或)(按位取反)()赋值运算符(及其扩展赋值运算符)2.5.1 基本的算术运算符(加 减 乘 除 求余)(加法运算符(双目运算符,如2+3),或正值运算符(单目运算符,如+6)(减法运算符(双目运算符,如3-2),或负值运算符(单目运算符,如-5)*(乘法运算符。如2*3)/(除法运算符。如5/2)(模运算符,或称求余运算符,两侧均应为整型数据,如

19、7 4的值为3)*、/、都为双目运算符。单目运算符的优先级高于双目运算符。2.5 算术运算符与算术表达式求两个数的余数的公式为:余数操作数1操作数2整商其中,整商是操作数1除以操作数2所取的整数商。例如:5%8 余数为516%8余数为037%8余数为5?-5%3和5%-3的余数是否相同为什么?-5%3:-5-3(-1)=-2 5%-3:5-(-3)(-1)=2因为单目运算符的优先级高于双目运算符两个整数相除的结果为整数,如5/3的结果值为1,舍去小数部分。如果除数或被除数中有一个为负值,则舍入的方向是不固定的。例如,-5/3在有的C+系统上得到结果-1,有的C+系统则给出结果-2。多数编译系统

20、采取“向零取整”的方法,即5/3的值等于1,-5/3的值等于-1,取整后向零靠拢。2.5.2 算术表达式和运算符的优先级与结合性用算术运算符和运算对象连接起来的、符合C+语法规则的式子,称C+算术表达式。运算对象包括常量、变量、函数等。例如,下面是一个合法的C+算术表达式:a*b/c-1.5+aC+语言规定了运算符的优先级和结合性。在求解表达式时,按运算符的优先级别,高低次序执行,例如先乘除后加减。C+规定了各种运算符的结合方向(结合性)算术运算符的结合方向为“自左至右”,即先左后右,因此b先与减号结合,执行a-b的运算,再执行加c的运算。有些运算符的结合方向为“自右至左”,即右结合性(例如赋

21、值运算符)。2.5.3 各类数值型数据间的混合运算在表达式中常遇到不同类型数据之间进行运算,如10+a+1.5-8765.1234*b在进行运算时,不同类型的数据要先转换成同一类型(系统自动转换),然后进行运算。转换的规则按图2.7所示。图2.7假设已指定为整型变量,为float变量,为double型变量,为long型,有下面表达式:10+a+i*f-d/e运算次序为:进行10+a的运算,先将转换成整数97,运算结果为107。进行i*f的运算。先将i与f都转换成double型,运算结果为double型。整数107与i*f的积相加。先将整数107转换成双精度数(小数点后加若干个0,即107.00

22、000),结果为double型。将变量e转换成double型,d/e结果为double型。将10+a+i*f的结果与d/e的商相减,结果为double型。上述的类型转换是由系统自动进行的。2.5.4 自增和自减运算符和运算符作用于变量有两种方式:一是前缀方式;二是后缀方式。前缀方式为:():在使用之前,先使的值加,如的原值为,则执行后,的值为,表达式的值也为。例如:int a=1;+a;变量a的值改变为2,它是a=a+1的值()后缀运算符为:():在使用之后,使的值加,如果的原值为,则执行后,的值为,表达式的值仍为。例如:int b=2;b+;变量的值改变为,但,表达式的值为若有a=b+,则a

23、=2,a=b+等价于a=b;b=b+1;(所谓后缀)而 a=+b等价于b=b+1;a=b;(所谓前缀)。()使用和运算符应注意的事项:()和运算符只能用于变量,而不能用于常量或表达式,如或()都是不合法的。()和的结合方向是“自右至左”,见附录。而算术运算符的结合性是“自左至右”。如果有,相当于()。()和运算符使用十分灵活,但如果使用不当,可能会产生“意想不到”的负面作用。如int i=3;couti+“i+;可能大家都认为会输出“”,而实际上输出的是“”。因为许多编译系统(包括Visual C+6.0和GCC)在处理输出流时,先按自右向左的顺序对各输出项求值,最先处理的是右边的,得到应输出

24、的值为,然后自增变成,再处理左边的,得到应输出的值为,然后自增变成。最后将和输出。又如,若的初值为,有以下表达式:()()()对该表达式的值,一般人的习惯是先求第一个括号内的值,得到,再实现的自增,值变为,再求第二个括号内的值,得到这样,表达式相当于,即12。而实际上大多数系统把作为表达式中所有的值,因此个相加,得到表达式的值为。在求出整个表达式的值后再实现自增次,的值变为。应该尽量避免出现这种用法。要遵循安全第一、易于理解的原则。如上面的表达式,如果编程者希望表达式的结果为12,同时的值为,则可以写成:i=3;a=i+;b=i+;c=i+;d=a+b+c;执行完上述的语句后,的值为12,的值

25、为。xt2-7.cpp#include using namespace std;int main()int i,j,m,n;i=8;j=10;m=+i+j+;n=(+i)+(+j)+m;coutitjtmtn i=9/m=+i+j-m=19/j+-j=11+i-i=10/+j-j=12/n=(+i)+(+j)+m-n=412.5.5 强制类型转换运算符在表达式运算中,不同类型的数据会自动地转换类型(由短向长 的转换)还可以利用强制类型转换运算符将一个表达式转换成所需类型。例如:(double)(将a转换成double类型)(int)(x+y)(将x+y的值转换成整型)强制类型转换的一般形式为(类型名)(表达式)注意:如果表达式只是一个变量,该变量可以不用括号括起来。(double)如果该式 是一个包含多项的表达式,则应该用括号括起来。(int)(x+y)如果写成(int)则只将转换成整型,然后与相加。也可写成以下形式:类型名(表达式)如int(x)或 int(x+y)例2.4 强制类型转换。#include using namespace std;int main()float x;int i;x=3.6;i=(int)x;coutx=x,i=iendl;return 0;运行结果如下:3.6,i=3的类型仍为float型,值仍等于3.6。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁