钱能C++程序设计教程3.ppt





《钱能C++程序设计教程3.ppt》由会员分享,可在线阅读,更多相关《钱能C++程序设计教程3.ppt(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+程序设计教程(第二版)第三章 数据类型 Chapter 3 Data Types清华大学出版社 钱 能1/15/20231n数据类型:u一定的数据在计算机的内部表示;u该数据所表示的值的集合;u在该数据上的一系列操作。n内部数据类型:1.整型长整型,短整型,字符型,布尔型 2.浮点型单精度,双精度1/15/20232第三章内容1.整型整型(int Types)2.整型子类整型子类(sub-int Types)3.浮点型浮点型(Floating-Point Type)4.C-串与串与string(C-string&string)5.数组数组(Arrays)6.向量向量(vectors)7.指
2、针与引用指针与引用(Pointer&References)1/15/202331.整型整型(int Types)整型数的内部表示:二进制补码 位数既定的二进制补码运算没有加减的区别;对于溢出,只是简单的舍弃而不是错误整型数的表示范围:取决于二进制位数整型数的操作:+,-,*,/,%,=,!,=,=,=,&,|,&=,|=,&,|,&=,|=,!=,=,+=,-=,*=,/=,%=,+,-,,,?:1/15/20234编译器的机器字长总是与整型的位长有关如:32位编译器的整型数一定为32位长整型字面值分八进制,十进制和十六进制不同表示如:0123 /8进制 0 x12af3 /16进制 1234
3、5 /10进制 超过表示范围的整型数其值不可预料或者出错如:int a=12345678912345678912345;/错1/15/20235.整型子类整型子类(Sub-int Types)字符型:表示范围:有符号:-128127 无符号:0255 输出形式与整型数不同:int a=65;char b=65;couta“n”;coutb“n”;结果为:65 A 1/15/20236枚举型:自定义整数区间,甚至列举单个整数值 enum Week Mon,Tue,Wed,Thu,Fri,Sat,Sun;最大特点是可以给每个值指定一个在程序中直接使用的标记(枚举符)编程中将其当作整数常量用如:in
4、t a=7;if(a=Sun)cout“Sundayn”;1/15/20237布尔型:表示范围仅含整数和1,也可以表示成true和false,相当于:enum bool false,true;因为条件表达式、逻辑运算的结果都是因为条件表达式、逻辑运算的结果都是或,所以,相当大数量的表达式的值与或,所以,相当大数量的表达式的值与布尔型对应布尔型对应1/15/202383.浮点型浮点型(Floating-Point Types)浮点数的内部表示:国际标准IEEE754浮点表示法,它与编程所用的浮点数字面量以及输出的十进制浮点数之间有一个转换关系浮点数的表示范围:32位浮点数3.41038 64位浮
5、点数1.810308浮点数的操作:常规的加、减、乘、除等操作1/15/202394.C-串与串与string(C-string&string)C-串结构每个字符占据1个字节一个C-串是一个字符序列,用来表示各种名字或者文字说明C-串的字符序列的最后总是添加有一个结束标志.即在6个字符的字串(“Hello!”)其空间存储有7个字节左边三图是不同细节的同一空间结构描述Hello!0 72 101 108 108 111 33 0010010000110010101101100011011000110111100100001000000001/15/202310知道了知道了C-C-串首地址串首地址,
6、即可知道整个串即可知道整个串,所所以可以藉字符首址以可以藉字符首址(字符指针字符指针)来操来操作作C-C-串串,但要注意,串的第一个字符但要注意,串的第一个字符与整个串的操作不同与整个串的操作不同,如如,C-,C-串的输串的输出操作出操作:char*str=”Hello”;cout *str endl;/显示显示H cout str endl;/显示显示Hello1/15/202311C-串不能直接比较,因为字符指针的比较只是地址值的比较而不是C-串的字典序比较:cout(“join”=”join”?”:”not“)”equaln”;/字面值比较 char*str1=”good”;char*s
7、tr2=”good”;cout(str1=str2?”:”not“)”equaln”;/字符指针比较 char buffer16=”Hello”;char buffer26=”Hello”;cout(buffer1=buffer2?”:”not“)”equaln”;/字符数组比较 结果:结果:not equal not equal not equal1/15/202312不得不配备专门操作C-串的库函数:nstrcpy(s1,s2);/从从s2拷贝到拷贝到s1nstrcmp(s1,s2);/比较比较s1与与s2nstrcat(s1,s2);/连接连接s2到到s1nstrrev(s);/将将s倒
8、排倒排 nstrset(s,c);/将将s全置为全置为cnstrstr(s,“ell”);/查找查找s中的子串中的子串nstrchr(s,c);/查找查找s中的字符中的字符 等等等等1/15/202313但字符指针操作C-串的安全性受到质疑:char*str1;char*str2=new char5;strcpy(str2,”ugly”);strcpy(str1,str2);/错:str1没有空间可储strcpy(str2,”Hello”);/错:str2空间不够大str2=”Hello”;/错:原来的”ugly”空间脱钩,导致内存泄漏根源:复制操作须以足够的目的地空间为前提,而所有C-串操作
9、的空间调配都是人为安排的,C-串库函数一概不管1/15/202314类串string串类自定义串对应字符指针的C-串操作:string a,s1=Hello;string s2=123;a=s1;/copy cout(a=s1?:not)equaln;/compare couta+s2endl;/concatenate reverse(a.begin(),a.end();coutaendl;/reverse couta.replace(0,9,9,c)endl;/set cout(s1.find(ell)!=-1?:not)foundn;/find string cout(s1.find(c)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 教程

限制150内