当前位置:文档之家› 【百度资料】c++_primer_plus第六版学习笔记 20150111 2210+

【百度资料】c++_primer_plus第六版学习笔记 20150111 2210+

【百度资料】c++_primer_plus第六版学习笔记 20150111 2210+
【百度资料】c++_primer_plus第六版学习笔记 20150111 2210+

笔记目录

第一章:预备知识4

1、c++简介 (4)

2、程序创建技巧 (4)

3、源文件扩展名 (4)

第二章:开始学习c++ (5)

1、c++代码区分大小写。 (5)

2、c++代码结构 (5)

3、函数 (5)

4、注译 (5)

5、c++预处理器和iostream文件 (5)

6、头文件名 (6)

7、名称空间 (6)

8、cout进行c++输出 (6)

9、控制符endl (6)

10、c++代码格式 (6)

C++语句 (6)

1、声明语句和变量 (6)

2、赋值语句 (7)

3、cout的新用法 (7)

4、使用cin (7)

5、使用cout拼接 (7)

6、类简介 (7)

7、函数 (7)

8、函数原型 (8)

9、使用库函数 (9)

10、函数变体 (9)

12、函数格式 (10)

13、函数头 (10)

14、复习int main()函数头 (10)

总结 (12)

复习题 (12)

编程练习 (13)

第三章、处理数据 (15)

1、简单变量 (15)

2、变量名 (15)

3、整型 (15)

4、整型short、int、long和long long (15)

※注译:位与字节 (16)

要了解的概念: (16)

5、运算符sizeof和头文件limits (17)

符号常量-预处理器方式(注译) (18)

6、初始化 (18)

c++初始化方式 (18)

7、无符号类型 (19)

8、选择整数类型 (20)

9、整型字面值 (20)

10、C++如何确定常量的类型 (21)

11、char类型:字符和小整数 (22)

成员函数cout.put() (23)

Char字面值and转义序列 (23)

通用字符名 (24)

signed char和unsigned char (24)

wcha_t (25)

C++11新增的类型:char16_t和char32_t (25)

Bool类型 (25)

12、const限定符(定义符号常量) (26)

13、浮点数 (26)

书写浮点数 (26)

浮点类型 (27)

浮点常量 (28)

运算符优先级和结合性 (29)

除法分支 (29)

运算符重载(注译) (29)

求模运算符 (30)

类型转换 (30)

14、总结 (33)

15、第三章复习题 (33)

16、编程练习 (34)

第四章、复合类型 (34)

1、数组 (34)

3、数组的初始化规则 (36)

4、c++数组初始化方法 (36)

5、字符串 (36)

拼接字符串常量 (37)

在数组中使用字符串 (37)

字符串输入 (38)

每次读取一行字符串输入 (39)

混合输入字符串和数字 (40)

6、string类简介 (41)

C++11字符串初始化 (41)

赋值、拼接和附加 (42)

String类的其他操作(包含了确定字符数函数) (42)

String类I/O (43)

其他形式的字符串面值 (44)

7、结构简介 (44)

在程序中使用结构 (45)

C++结构初始化 (47)

结构可以将string类作为成员吗 (47)

其他结构属性 (48)

结构数组 (48)

结构中的位字段 (48)

枚举的取值范围 (50)

11、指针和自由存储空间 (51)

声明和初始化指针 (52)

指针的危险 (53)

指针和数字 (54)

使用new来分配内存 (54)

使用delete释放内存 (55)

使用new来创建动态数组 (56)

12、指针、数组和指针算术 (58)

指针小结 (60)

指针和字符串 (62)

使用new创建动态结构 (64)

第一章:预备知识

1、c++简介

c面向过程,c++面向对象。

2、程序创建技巧

编写源代码>>编译器(翻译)源代码>>生成目标代码>>将目标代码与其他代码链接>>生成执行代码.

3、源文件扩展名

第二章:开始学习c++

1、c++代码区分大小写。

2、c++代码结构

c++.cpp 这是个演示文件注译

#include 预处理器编译指令<头文件>

using namespace std 指定命名空间std

int main() 函数头

{ 函数体开始用{

cout<<"这是个演示文件"; 函数体(cout输出语句) c++语句必须;结尾

cout<

return 0; 结束main()函数的return语句

}

3、函数

main()是一个函数,示例中int main()是一个函数头,函数头为函数和程序对其他部分之间的接口(自己理解为下面的函数体)做了总结,{包含的函数体表示计算机应该做什么指令,每一条指令为一个语句,每个语句都应由;结尾。

main()函数最后一条语句“return 0”叫做返回语句,叫做返回语句。

函数可被其他函数激活或调用,函数头描述了函数和调用它的函数之间的接口,位于函数前面的叫做函数返回类型(如int main(),这里main()函数的返回类型是int(整型)),函数后面括号部分叫做形参列表或者叫参数列表。

C++程序必须包含一个名为main()的函数。

4、注译

c++注译以//打头//结尾,可以同代码同一行也可单独一行,也可用c语言注译/*开头*/结尾。

5、c++预处理器和iostream文件

#include 预处理器,在主编译之前对源文件进行处理。

#include 预处理操作,该指令将iostream头文件的内容添加到程序中,

iostream文件包含了输入和输出的定义,如cout输出cin输出都需要该文件定义。

6、头文件名

iostream叫做包含文件,也叫头文件,c++包含了很多这样的头文件,每个头文件支持一组特定的工具,在C语言中这样的头文件扩展名有.h,来自c语言的头文件在C++中最前面加c,如cmath。

7、名称空间

头文件不包含.h便可以使用命名空间,

using namespace叫做using编译指令,(暂时理解为存放组件的空间)

类、函数、变量是c++的标准组件,这些组件放置在std空间中,

因此使用using namespace std指令,指令使得std空间的所有名称都可用。

!也可省略using编译指令使用以下方式,如:std::cout<<"字符串"; std::cout<

8、cout进行c++输出

如cout<<"内容" 双引号括起的是字符串,为将要显示的字符,

<<符号表示将字符串发送给cout,

cout是iostream预定义的一个对象,属性包括一个插入运算符,(语句理解为将<<右边的字符插入到输出流中。)!小提示<<表示多种运算符,这里是运算符重载的一个例子。

9、控制符endl

endl是一个特殊的符号,表示重起一行,

如endl在cout中有特殊含义的称为控制符(在iostream文件中定义)

支持旧的C语言换行方法,如cout="字符\n";

10、c++代码格式

1、在C++中分号;标识了语句的结尾

2、可将几条代码放在一行,也可放在几行上。

C++语句

1、声明语句和变量

!尽量在首次使用变量前声明。

2、赋值语句

赋值语句:将值赋给存储单元,如:carrots=25;

=叫做赋值运算符,可以连续使用改运算符,赋值自右到左进行,

允许对变量的值进行更改,如:carrots=25-1;

3、cout的新用法

如cout=carrots;

没有双引号程序不会打印该字符carrots,

而是打印前面进行过赋值操作的

4、使用cin

例:int X;

cout<<”这是个简单的X程序”;

cin>>X;(如在这里输入12)

cout<<”X加上2等于多少”;

X=X+2;

Cout<

输出结果为:这是个简单的X程序,X加上2等于多少,X加2等于14X.

cin可以理解为跟cout相反,作为输入流的一个对象,也可以接收通过键盘输入的字符。

5、使用cout拼接

可用格式:cout<<”Now you have”;

<

<<”carrots”;

<

6、类简介

类是用户定义的一种数据类型,类相比对象就像类型相比变量,类定义描述的是数据格式及其用法,而对象则是根据数据格式规范创建的实体。举例来说类就像所有的著名演员,而对象就好比某个著名演员。

Int carrots,这个代码创建一个类型为int的变量,corrots可以存储整数,可以加和减,来看cout,它是一个ostream 类的对象,ostream类描述了它包含的对象表示的数据以及可以对他执行的所有操作,如cout将数字或字符插入到输出流中,另外的还有cin。该类库是语言标准制定的类。

7、函数

X=sqrt(6.25); //计算6.25的平方根,并将值赋给变量x//

表达式sqrt(6.25)调用sqrt()函数,sqrt(6.25)称为函数函数调用,被调用的函数叫被调用函数sqrt(),包含函数调用的函数叫做调用函数,如前面声明的函数头int main()。 参数是发送给函数的值,返回值是从函数中发送回去的值。

8、函数原型

在使用函数之前,编译器必须知道 函数 的 参数类型 和 返回值类型, C++使用的方式是使用函数原型语句。

比如sqrt()函数在c++中定义为一个(可能)带小数部分的数字(如6.25)作为参数,并返回一个相同“类型”的数字,有些语言称这种数字为实数,c++称这种类型为double ,那么sqrt()的原型就像这样:double sqrt(double); 第一个double 意味着sqrt()返回一个double 值,括号中的double 意味着sqrt()需要一个double 参数。 因此该原型对sqrt()函数的描述和下面代码使用的函数相同:

double x; //原型结尾有分好表明是一条语句,如果省略分好编译器就会把这行解释为函数头,并接着要求提供定义该函数的函数体。 X=sqrt(6.25)

在程序中使用sqrt()函数时,也必须提供函数原型,可用两种方法来实现。

1、

在源代码中输入函数原型

2、 在头文件(cmath )中定义函数原型

9、使用库函数

C++还允许创建变量时进行赋值,

如:double a=sqrt(b)这个过程叫做初始化。

10、函数变体

有些函数需要多项信息,这些函数使用多项参数,参数间用,号隔开,

例如数学函数pow()接受两项函数,返回值以第一个参数为底,第二个参数为幂,该函数的原型如下:

Doub=pow(double,double).

例如要计算5的8次方

Pw=pow(5.0,8.0);

另外有一些函数不接受任何参数,例如有一个c库中包含一个rand()函数,该

函数不接受任何参数,并返回一个随机整数,该函数的原型如下:

Int rand(void)

关键字void指出,该函数不接收任何参数,如果括号为空省略void,则c++解释为一个不接受任何参数的隐式声明。

可以这样使用该函数。Myguess=rand();

!!c++中函数调用必须使用()号,即使没有参数。

还有一些函数,如编写了一个函数它按美元美分格式显示数字,当向他传递参数23.5时,它将在显示屏显示$23.50。

由于这个函数把值发送给了屏幕,而不是调用程序,因此它不需要返回值,

可以在原型中使用void来指定返回类型,以指出没有返回值。

Void bucks(double);

不返回值的函数不能将该函数调用放在赋值语句或其他表达式中。

相反,应使用一条纯粹的函数调用语句

Bucks(1234.56);

11、用户定义的函数(此节在第7页有练习题)

添加另外一个用户定义的函数必须在使用之前提供其原型,但是必须提供新函数的源代码,这里放在main()函数后面。(理解为调用simon必须提供simon函数源代码,例中第二个函数体。)

程序清单中mian()函数调用了2次库函数simon(),一次的参数为3,一次的参数为变量count。下面是程序2.5的运行情况。

12、函数格式

在2.5中函数simon()定义与main()函数定义相同,首先有个函数头,然后有花括号开始的函数体。

13、函数头

在上面2.5清单中,simon()函数的函数头如下

Void simon(int n)

开头的void表示simon()没有返回值,因此main()调用simon()不会生成可在main()中赋予变量的数字。因此调用该函数应按如下方式:

Simon(3);

由于simon没有返回值,因此不能这样用它:

so=simon(3);

在以上实例中,void simon(int n)括号中的int表示使用该函数时应该提供一个int参数,n是一个新的变量,函数调用传递的值将赋予给它,如下面的函数调用将3赋予给simon()函数头中的变量n。

Simon(3);

当函数体中使用cout输出n时,将使用函数调用传递的值,因此2.5实例第一行输出为什么simon(3)显示3的原因。Simon()的函数头已经说明,simon接收int参数,但不返回任何值。

14、复习int main()函数头

mian()函数的值并不返回给程序而是返回给操作系统,操作系统使用main()函数,之后的return 0要求返回是0,如0表示程序运行成功,如是非0值表示程序不能正常运行。

15、关键字

在计算机语言中的词汇如:void、double、int等等称为关键字,为c++语言中的专用词汇,这些关键字不能用作变量名,也不能用作函数名。

例外:如cout在不使用输出操作的时候可以把它作为变量名,但不能在有输出的情况下当做变量名来使用

16、用户定义有返回值的函数

有返回值的函数练习题

//stone,将英石转换为磅.cpp

#include

int stonetolb(int);//提供函数stonetolb原型,返回值为int,参数值为int)

int stonetolb(int sts)//函数头,括号中的int表明,使用stonetolb时应提供一个int参数,sts是一个新的变量。

//函数调用时传递的值将被赋予给sts)上面stonetolb(stone)stone的值被赋予给sts

{

return 14*sts;//有返回值的函数,应用return来提供返回值,这里返回main()

}

int main() //函数头,main()返回值为int

{

using namespace std; //使用命名空间std

int stone; //变量声明

cout<<"请输入一个整数,单位为“英石”";//输出语句

cin>>stone;//输入键击数据

int pounds=stonetolb(stone);//调用stonetolb变量参数值为stone,返回值为整数赋予pounds(磅),这里

cout<

cout<

return 0; //执行结束返回0

}

//函数调用时传递的值:函数被调用时赋予的值!

//有返回值的函数,应用return来提供返回值,main调用了该函数,这里返回给main()

没有返回值的练习题

#include

void simon(int); //定义simon原型,参数为int,返回值为void

int main()//函数声明

{

using namespace std;

simon(3); //调用simon,参数值为3

cout<<"pick an intrger:";

int count; //定义变量count为整数

return 0;

}

//因调用了simon函数,下面提供该函数的源代码

void simon(int n)//函数调用时传递的值赋予给"n"

{

using namespace std;

cout<<"Simon says touch your toes

"<

}

17、多函数程序中使用using指令

在上面的有返回值函数的例子中,两个函数程序都使用了using指令,这是因为都使用了cout,必须用到名称空间std的定义。

在以上实例中,可以用另一种方法让两个函数都能访问名称空间std,即将编译指令放在外面,且两个函数的前面。

让程序能够访问名称空间的方法,四种:

总结

1、C++程序由一个或多个被称为函数的模块组成

2、程序从main()函数开始执行,该函数必不可少

3、函数由函数头和函数体组成,函数头指出函数的返回值(如有)的类型和函数期望通过参数传递给它的信

息的类型。

函数体由一系列位于花括号{中的c++语句组成,有多种类型的c++语句,包括以下六种:

⊙声明语句:定义函数中使用的变量名称和类型

⊙赋值语句:使用赋值运算符(=)给变量赋值

⊙消息语句:将消息发送给对象,激发某种行动

⊙函数调用:执行函数,被调用的函数执行完毕后,程序返回到函数调用语句后面的语句

⊙函数原型:声明函数的返回类型、函数接收的参数数量和类型

⊙返回语句:将一个值从被调用的函数哪里返回到调用函数中

◆类是用户定义的数据类型的规范,详细描述了如何表示星系以及可对数据执行的操作。对象是根据类规范创建的实体,奖项简单变量是根据数据类型描述创建的实体一样。

◆c++可使用大量的c库函数,要使用库函数,应当包含提供该函数原型的头文件。

复习题

1.在c++程序的模块叫什么?

答:函数

4.什么语句可以用来打印“Hello,world”然后开始新的一行

答:cout<<”Hello,word”<

5.什么语句可以用来创建名为cheeses的整数变量?

答:int cheeses;

6.什么语句可以用来将值32赋给变量cheeses?

答:cheeses=32;

7.什么语句可以用来将从键盘输入的值读入变量cheeses?

答:cin>>cheeses;

8.什么语句可以用来打印“We have X varieties of cheeses “其中X为变量cheeses的当前值?

答:cout<<”We have”<

9.下面的函数原型指出了关于函数的哪些信息?

答:int froop(double t) //调用froop函数时,应提供一个参数,该参数类型为double,返回值为int。

Void rattle(int n)//调用rattle函数时应提供一个参数,参数类型为int,该函数不返回任何值.可以这样用他rattle(3);

Int prune(void) //该函数不接受任何参数,返回一个整数,例如可以这样用他

,int 函数名=prune();

10.定义函数时,什么情况下不必使用关键字return。

答:函数的返回类型为void的情况下,不必使用他,但如果不提供返回值,则可以用他return;

11.架设您编写的main()函数包含如下代码:

Cout<<”请输入PIN码”;

而编译器指出cout是一个未知标识符,导致问题的原因可能是什么,指出3中修复这种问题的方法。

答:因为头文件没有包含ostream头文件,

修复方法:1、在头文件加入#include 2、

编程练习

编写一个c++程序,它显示您的姓名和地址

#include

using namespace std;

int main()

{

cout<<"我叫邹伟"<

cout<<"住在中国";

cin.get();

cin.get();

return 0;

}

编写一个c++程序,它要求用户输入一个以long为单位的距离,然后将他转换为码,(一long等于220码).

#include

using namespace std;

int main()

{

int longs;

int longe;

cout<<"请输入要转换的数值,按回车键确认:";

cin.get();

return 0;

}

编写一个c++程序,它使用3个用户定义的函数(包括main()),并生成下面的输出

Three blind mice

Three blind mice

See how they run

See how they run

编写一个程序,让用户输入其年龄,然后显示该年龄包含多少个月。如下所示

Enter your age:29

#include

using namespace std;

int main()

{

int age;

cout<<"请输入您的年龄";

cin>>age;

cout<

age=age*12;

cout<

cin.get();

cin.get();

return 0;

}

编写一个程序,其中的main()调用一个用户定义的函数(以摄氏度为参数,并返回相应的华氏度)该程序按下面的格式要求用户输入摄氏度值,并显示结果.

#include

using namespace std;

double shs(double);

int main()

{

int sh;

cout<<"输入要转换摄氏度的值:";

cin>>sh;

double hs=shs(sh);

cout<

cin.get();

cin.get();

}

第三章、处理数据

面向对象的编程(opp)的本质就是涉及并扩展自己的数据类型,涉及自己的数据类型就是让类型与数据匹配。

内置的c++类型分两组,基本类型和复合类型

1、简单变量

为了把信息存储在计算机中,程序必须记录3个基本属性:

1.信息将储存在哪里

2.要储存什么值

3.存储何种类型的信息

目前为止,本书示例采取的方法都是声明变量,

声明中使用的类型和通过符号类表示其值的变量名。

2、变量名

C++提倡有一定含义的变量名,如果变量表示大小,应将其命名为c_big或big,而不要命名为x或c。必须遵循以下几条简单的c++命名规则。

●在名称中只能使用字母字符、数字和下划线(____)

●名称的第一个字符不能是数字。

●区分大小写字符

●不能将c++关键字做名称。

●以两个下划线或下划线和大写字母大头的名称被保留给实现(编译器及其使用的资源)使用,以一个下划线开头的名称被保留给实现。用作全局标识符。

●c++对名称的长度没有限制,名称中所有的字符都有意义,但有些平台有长度限制。

3、整型

整数就是没有小数的数字

不同c++整型使用不同的内存量来存储整数,使用的内存量越大,可表示的整数值范围也越大,另外有的类型(符号类)可表示正值和负值,而有的类型(无符号类型)不能表示负值

C++的基本整型分辨是char、short、int、long和c++11新增的long long,其中每种类型都有符号版本和无符号版本,因此总共有10中类型可选择。

4、整型short、int、long和long long

计算机内存有一些叫做位(bit)的单元组成,c++的上述类型通过不同数目的位来存储值,最多能表示4中不同的整数宽度。

C++提供了一种灵活的标准,它确保最小长度(从c语言借鉴)如下所示:

●long long 至少64位,且至少与long一样长

可以像使用int一样,使用这些类型来声明变量:

Short score;

Long position;

实际上short是int short的简称,long是int long的简称。

这四种类型都是符号类型,意味着每种类型的取值范围中负值和正值几乎相同,例如,16位的取值范围是-32768到+32767.

※注译:位与字节

计算机内存的基本单元是位,可以看作是电子开关,可以开也可以关,关表示0开表示1,

8位的内存快可以设置成256种不同的组合,

因为每一位都有两种设置(开关1、0),所以8位的总组合数为2X2X2X2X2X2X2X2,即256。

每增加一位,组合数便加倍(x2),字节通常指的是8位内存单元。

从这个意义上来说,字节就是描述计算机内存量的度量单位。

要了解的概念:

●有的类型可表示正值和负值,而有的不能表示负值

●术语“宽度”表示描述存储整数时使用的内存量,使用内存越多,则越宽

●c++的基本整型分别是(按宽度递增排列)char、short、int、long和c++11新增的longlong,

其中每种类型都有有符号版本和无符号版本,因此总共有10中类型可选择。

●计算机内存由一些叫做位(bit)的单元组成

●c++长度标准,第4课开始。

●8位等于1字节(每个系统中这个单位可能不同)

可以像使用int一样,使用这些类型名来声明变量,如:

Short score

Long position

这四种类型都是符号类型,意味着每种类型的取值范围中,赋值和正值几乎相同。列入16位的int取值范围是-32768到+32767(2的16次方),

要知道系统的中整数的最大长度,可以在程序中使用c++gongju来检查。首先sizeof运算符返回类型或变量的长度,单位是字节,头文件climits中包含了关于整型限制的信息,它定义了表示各种限制的符号名称,例如INT_MAX为int 的最大取值,CHAR_BIT为自己的位数,以下程序还演示了如何初始化,即声明语句将值赋给变量。

#include

#include

int main()

{

using namespace std;

int n_int=INT_MAX;

short n_short=SHRT_MAX;

long n_long=LONG_MAX;

long long n_llong=LLONG_MAX;

cout<<"计算数据类型的限制长度"<

cout<<"int 是"<

cout<<"short 是"<

cout<<"最大值标准:"<

cout<<"int:"<

cout<<"short:"<

cout<<"long:"<

cout<<"long long:"<

cout<<"最小整数值="<

cout<<"位(比特)转换为字节的位数="<

cin.get();

cin.get();

return 0;

}

以下是上述代码在windows7 64位中的输出

5、运算符sizeof和头文件limits

Sizeof运算符指出,在使用9位字节的系统中,int的长度为4个字节,可对变量名或类型名使用sizeof运算符,对类型名(如int)使用运算符时,应将名称放在括号中,但对变量名使用时括号是可选的。如

Short(int)对类型名,short n_int对变量名

头文件climits定义了符号常量来表示类型的限制,INT_MAX表示类型int能够储存的最大值,对windows7中为2147483647。

编译器厂商提供了climits文件,该文件指出了其编译器中的值,如在使用16位的int老系统中,climits文件将INT_MAX 定义为32767,下表对该文件定义的符号常量进行了总结,其中的一些符号常量与还没有介绍过的类型相关。

符号常量-预处理器方式(注译)

Climits文件中包含与下面类似的语句行:

#define INT_MAX 32767;

在c++编译器中,首先将源代码传递给预处理器,

这里#define和#include一样也是一个预处理器编译指令,该指令告诉预处理器,在程序中查找INT_MAX,并将所有的INT_MAX都替换为32767。

也就是说可以使用#define来定义自己的符号常量(见下面的程序)这个指令是c语言遗留下来的,

c++有更好的创建符号常量的方法(const,下一节讨论),所以不会经常使用这个指令。

而有些头文件,尤其是被设计成可用于c和c++的头文件必须使用这个指令。

6、初始化

初始化就是将赋值与声明合并在一起,例如下面的语句声明了变量n_int,并将int的最大取值赋予给它.

Int n_int=INT_MAX;

也可以用字面值常量来初始化,可以将变量初始化为另外一个变量,条件是后者已经定义过,甚至可以使用表达式来初始化变量,条件是当程序执行到该声明时,表达式中所有的值都是已知的。如:

int uncles=5;

int aunts=uncles;

int chaire=aunts=uncles+4;

在使用变量前必须先定义后使用,否则提示非法。

前面的初始化语法来自c,C++还有另外一种c语言没有的初始化语法。

int owls=101;

int wrens(432);

在声明变量时对它初始化,可避免以后忘记给它赋值的情况.

c++初始化方式

还有另外一种初始化方式,这种方式用于数组和结构,在c++98中也可用于单值变量。

int hamburgers={24}

大括号初始化器用于单值变量情形还不多,但c++标准使得这种情形多了,首先使用这种方式可使用等号=,也可不使用.

int emus{7};

int rheas={12};

大括号中可不包含任何东西,这种情况下变量被初始化为零

7、无符号类型

以上介绍的4种整型都是能存储负数值的符号类型,4种类型中每种都有一种不能储存负数值的无符号变体。有点是可以增大变量可存储的最大值。

仅当数值不为负时才应使用无符号类型。

要使用无符号版本的基本整型,只需使用关键字unsigned来修改声明即可。

unsigned short change;l //无符号类型

unsigned int rovert;

unsigned quarterback;

unsigned long gone;

●unsigned本身是unsined int的缩写

以下程序演示如何使用无符号类型,并说明了程序试图超越整型的限制将产生的后果,最后再看看预处理器语句#define。

#include

#define ZERO 0 //将所有ZERO值替换为0,

#include//c++工具头文件

int main()

{

using namespace std;

short sam=SHRT_MAX; //初始化,将SHRT的最大值赋给变量sam,sam变量类型为short(可存储负数)。

unsigned short sue=sam;//将变量sam(shrt的最大值)的值赋给无符号类型short变量sue

cout<<"山姆有"<

cout<<"这么多?"<

cout<<"如果每个人的资产都加1美元"<

sam=sam+1;

sue=sue+1;

cout<<"山姆的资产有"<

cout<<"可怜的山姆资产变为了负数,"<

sam=ZERO;

sue=ZERO;

cout<<"山姆的资产有"<

cout<<"可怜的山姆"<

cout<<"现在他们都去借了1美元."<

sam=sam-1;

sue=sue-1;

cout<<"现在山姆的资产有"<

cout<<"汤姆的资产又变成负值了!"<

cin.get();

cin.get();

return 0;

}

程序解读

sam的数据类型为符号类型(取值范围正数和负数基本上一样)该系统取值为-32768~32767(最大值)

sue的数据类型为无符号类型(取值范围只能是正数)从sam的值赋予了sue因此等于32767.

现在short sam=32767 unsigned sue=32767

接着,如果给分别给两个变量+1,sam的最大值已经是32767,如果+1超越了最大值限制,其值将从范围的另一端取值,

c++确保了符号类型的这种行为,但不保证无符号类型的超越限制(上溢或下溢)不会出错。而这正是当前实现最常见的行为。

8、选择整数类型

9、整型字面值

整型字面值(常量)是显式的书写的常量,如212或1776,和c一样。c++能以3种不同的计数方式来书写整数:基数为10,基数为8,基数为16(硬件黑客的最爱)。

c++表示法:使用前一(两)位来标示数字常量的基数:

∴如果第一位为1~9则基数是10(十进制)因此93是以10为基数。

∴如果第一位是0,第二位是1~7,则基数为8(八进制)因此042的基数是8,相当于十进制数32

∴如果前两位为0x或者0X则基数为16(十六进制)因此0x42为十六进制数,相当于十进制数66.

对于十六进制数,字符a~f和A~F标示了十六进制位,对应为10~15。0xF为15,0xA5为165(10个16加5个1)。以下程序标示了这几种表示方法:

#include

int main()

{

using namespace std;

int chest=42;

int waist=0XB000;

int inseam=042;

cout<<"monsieur cuts a striking figure!\n";

相关主题
文本预览
相关文档 最新文档