C++Primer Plus 第三章 学习

 OOP的本质是设计并拓展自己的数据类型,即让类型与数据匹配。

C++内置的类型,分为两组:基本类型,复合类型。

基本类型:整数,浮点数

复合类型:数组,字符串,指针和结构。

标识存储的数据的方法------使用变量

3.1简单变量

程序必须记录三个基本属性

1.信息将存储在哪里

2.要存储什么值

3.存储何种类型的信息

声明中使用的类型描述了信息的类型和通过符号来标识其值的变量名 

int n;

n=5;

3.1.1变量名

C++的命名规则

1在名称中只能使用字母字符、数字和下划线(_)。

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

3区分大写字符与小写字符 

4不能将C++关键字用作名称。

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

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

全局名称指的是名称被声明的位置

3.1.2整型

整数就是没有小数部分的数子,整数有很多,如果将无限大的整数看作很大,则不可能用有限的计算机内存来表示所有的整数。因此语言只能表示所有整数的一个子集。有些语言只提供一种整形(一种类型满足所有要求!)。而C++则提供好几种,这样便能够根据程序的具体要求选择最合适的整型。

不同C++整形使用不用的内存量来存储整数。使用的内存量越大,可以表示的整数值范围也越大。有的类型(符号类型)可表示正负值,而有的类型(无符号类型)不能表示负值,术语宽度(width)用于描述存储整数时使用的内存量。使用的内存越多,则越宽。C++的基本类型(按宽度递增的顺序排列)分别是char,short,int,long和C++11新增的long long ,其中每种类型都有符号版本和无符号版本

3.1.3 整型short,int,long,longlong

1short 至少16位

2int 至少与short 一样长 最多32位

3long 至少32位 且至少与int 一样长 最多64

4longlong 至少64位 且至少与long 一样长 。

位于字节

计算机内存的基本单元是位(bit)

字节(byte)通常指的是8位的内存单元,字节就是描述计算机内存量的度量单位

C++对字节的定义为:C++字节由至少能够容纳实现的基本字符集的相邻位组成,也就是说,可能取值的数目必须等于或超过字符数目

术语 八位组(octet)表示8位字节

16位的int的取值范围为-32768到+32767

sizeof运算符返回类型或变量的长度,单位为字节(运算符是内置的语言元素,对一个或多个数据进行运算,并生成一个值例如,加好运算符+将两个值相加)。头文件climits中包含了关于整型限制的信息,具体地说,它定义了表示各种限制的符号名称,例如INT_MAX为int的最大取值,CHAR_BIT为字节的位数。

使用sizeof 运算符 得到结果

int is 4 bytes     1byte=8bit  1:8 一字节等于8位(比特)

1~~ 运算符sizeof 和头文件 limits

cout<<"int is"<<sizeof(int)<<"byes.\n";

cout<<"short is"<<sizeof n_short<<"byes.\n";

头文件 climits定义了符号常量--预处理器方式来表示类型的限制

#include <climits>

INT_MAX表示类型int 能够存储的最大值

在C++编译过程中,首先将源代码传递给预处理器,在这里#define和#include一样,也是一个预处理器编译指令。该编译指令告诉预处理器;在程序中查找INT_MAX,并将所有的INT_MAX都替换成32767,因此#define编译指令的工作方式与文本编辑器或字处理器中的全局搜索并替换命令相似。

2初始化 

初始化将赋值与声明合并在一起

int n_int = INT _MAX

3.C++11初始化方式

这种方式用于数组和结构,但在C++98中,也可用于单指变量;

int hamhurgers = {24}  ;

int hamhurgers  {24}  ;

int hamhurgers  {};   大括号内可以不写任何东西 在这种情况下 变量将被初始化为0;

C++使用不同的方式来初始化不同的类型,初始化类变量的方式不同于初始化常规结构的方式,而初始化常规结构的方式又不同于初始化简单变量的方式;通过使用C++新增的大括号初始化器,初始化常规变量的方式与初始化类变量的方式更像,C++11使得可将大括号初始化器用于任何类型,这是一种通用的初始化语法。

3.1.4无符号类型

四种整形类型 

short int long longlong 这四种整形都有一种不能存储负数值的无符号变体,其优点是可以增大变量能够存储的最大值。  short-32768 到 +32767  无符号版本的表示范围是 0-65535

仅当数值不会为负时才应使用无符号类型,如人口、粒数等。要创建无符号版本的基本类型,只需使用关键字unsigned来修改声明即可:

unsigned  short change;

unsigned  int  rovert

unsigned quarterback

unsigned  long gone 

unsigned  long long  lang_lang

 注意  unsigned 本身是 unsigned int 的缩写 

3.1.5选择整形类型

int 被设置为对目标计算机而言最为“自然”的长度。自然长度(natural size) 指的是计算机处理起来效率最高的长度

如果变量表示的值不可能为负时,则可以使用无符号类型,这样变量可以表示更大的值。

如果知道变量可能表示的整数值大于16位整数的最大可能值,则使用long,即使系统上位int位32位,也应该这么做,这样,将程序移植到16位系统时,就不会突然无法正常工作,如果要存储的值超过20亿,可使用long long 

如果 short比int小 ,则使用short可以节省内存,仅当有大型整数数组时,才有必要使用short(使用short数组 不会应为 位的增加而用于存储数组的内存量增加)

如果只需要一个字节(byte),可使用char 

3.1.6 整型字面值(常量)

C++能够以三种不同的技术方式在书写整数:基数为10、基数为8(老式UNIX版本)和基数为16(硬件黑客的最爱)

C++使用前一(两)为来标识数子常量的基数。 如果第一位为1~9,则基数为10(十进制)因此93是以10为基数的。如果第一位为0,第二位为1~7,则基数为8(八进制);因此042的基数为8,它相当于十进制数的34,如果前两位为0x 0X则基数为16(十六进制)因此0x42为十六进制相当于十进制数66,a~f和A~F表示了十六进制数相对于10~15,0XA5(10个16加5个1) 为165;

在默认情况下,cout 以十进制格式显示整数

不管是什么数值,计算机都将以相同的方式存储到计算机中---被存储的二进制数(以2为基数)

如果要以十六进制和八进制格式显示整数,可以使用cout的一些特殊特性,头文件提供了endl重起一行, 还提供了控制符dec、hex、oct,分别用于指示cout 以十进制,十六进制,八进制格式显示整数

cout<<hex;

cout<<dsad <<endl;

cout<<oct;

cout<<dsad<<endl;

诸如cout<<oct;cout<<hex; 等代码不会在屏幕上显示任何内容,而只是修改cout显示整数的方式。因此,控制符hex实际上是一条消息,告诉cout采取何种行为。另外由于标识符hex位于名称空间std中,而程序使用了该名称空间,因此不能将hex用作变量名,然而如果省略编译指令using,而使用std::cout 、std::endl、std::hex和std::oct 则可以将hex用作变量名。

3.1.7C++如何确定常量的类型

C++默认将整型常量存储为int类型。

后缀方面  l或L表示long常量  u或U后缀表示 unsigned int 常量 ul或lu表示unsigned long常量(因为1和l容易混淆 所以应该使用L来座位后缀) C++11中提供了 表示类型long long  后缀ll和LL还提供了用于表示类型unsigned long long 的后缀ull,Ull、uLL、ULL

在将40000表示为long 的计算机系统中,十六进制0x9C40(40000)将被表示为unsigned int 这是因为十六进制常用来表示内存地址,而内存地址是没有符号的,因此 unsigned int 比long 更适合用来表示16位的地址

3.1.18 char 类型 :字符和小整数

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值