C++笔记2
处理数据
面向对象编程OOP本质上是设计并扩展自己的数据类型,设计自己的数据类型就是让类型和数据匹配,如果正确的做到了这点,将会发现使用数据的时候将会简单很多。
但是在我们创建自己的数据之前,必须先了解并且理解C++的内置的类型,因为这些类型是创建自己类型的基本组件。
内置的C++类型分为两组,基本类型和复合类型
基本类型就是整数和浮点数
当然我们也需要一种标识存储的数据的方法,那就是使用变量
简单变量
变量名的命名方案和函数命名方案一样,只要合法,编译器就不会介意,但是精确的有意识的命名会帮助我们理解变量。
整型
整数就是没有小数的数字
C++的基本整型按照宽度的顺寻排列
依次是 char short int long longlong
其中每一种还有有符号版本和无符号版本
计算机的内存是由一些叫做位 bit的单元组成
Short 至少是16位
Int至少和short一样
Long至少32,longlong至少64位
计算机的内存的基本单元是位bit,可以看作是电子开关
字节 byte 通常是8位的内存单元
要知道系统中的整数的最大长度,可以使用sizeof运算符返回类型或者变量的长度,单位是字节
在使用sizeof的时候可以对类型和变量名使用
对类型使用的时候 ,类型要放到括号里面
但是对于变量名使用的时候,括号是可选的
其中 头文件 climits 定义了符号常量来表示类型的限制
初始化
初始化将赋值和声明合并在了一起
同时也有其他的控制符出现
比如
«hex «oct
C++如何确定常量的类型
一般来说只要是没有使用特殊的后缀或者是值太大,都可以直接储存为 int 类型。
Char 类型
专门储存字符而设计大的,储存数字对于计算机来说不算什么,但是储存字母就是另外一件事情了,编程语言通过使用字母的数值编码来解决这个问题
在美国最常用的符号集是ASCII字符集,字符集中的字符用数值编码ASCII码
比如:字符A的编码为65
还有国际的编码制度
这个简单的例子里面我们可以很清楚的理解到 char 类型
但是我们明明在内存中存储的是M的编码啊,为啥输出的是M,这个是通过cin and cout的智能实现的。
也就是说值得类型将会引导cout如何显示值,这是智能对象得例子
成员函数 cout.put()
. 是一个很重要得opp概念,成员函数,类定义了如何表示和控制数据,成员函数归类所有,描述了操作类数据得方法,例如 ostream类里面有个put()成员函数,鄙俗使用对象名加函数名称连接起来。
句点称为成员运算符
Cout.put()成员函数提供了另外一种显示字符的方法
就是说在打印字符常量的时候打印字符自己,而不是ASCII码。
### Char 字面值
在C++中,书写字符常量的方法有很多种,对于常规的字符,最简单的方法就是将字符用单引号括起来,这种表示法代表的是字符的数值编码
这种方法是优于数值编码的,因为不同的系统采用的编码方式可能会有差别。
### 通用字符名
C++实现支持一个基本的源字符集,就是可用来编写源代码的字符集,它由标准美国键盘的字符(包含大写和小写)数字,还有符号组成,还有一个基本的执行字符集。还有就是需要考虑的是你的编译器是否支持某种编码,如果支持,那么你在书写程序的时候就可以直接使用,最后储存的时候会自动根据系统的编码实现的。
### Signed char and unsigned char
和 int 不同的是,char 在默认情况下既不是没有符号,也不是有符号,是否有符号取决于C++实现。
如果将 char 用作数值类型,那么这俩者的差异将会变得非常重要。
Wchar_t
程序需要处理的字符集可能无法通过一个8位的字节表示,如日文汉字系统,对于这种情况,C++处理有俩种,首先,如果大型字符集是实现的基本字符集,那么编译器可以将char定义为一个16位的字节或者更长的字节,其次,一种实现可以是同时支持一个小型基本字符集和一个较大的扩展字符集。
Bool 类型
在计算中,bool 变量的值可以是 true or false 。
非0为 true ,0为false
Const 限定符
现在我们回头来介绍常量的符号名称。符号名称指出了表示的内容,另外,如果在程序中多个地方使用一个常量,那么需要修改这个常量的时候,只需要修改一个符号定义即可,可以用#define语句的说明,但是C++有一种更好的处理办法,就是使用 const。
并且使用了const之后,常量在初始化之后,他的值就被固定了,编译器将不再允许再修改这个常量的值,所以const叫做限定符
浮点数
在我们了解了整型之后我们需要了解浮点类型,浮点数能够表示带有小数部分的数字,计算机将小数分为两部分储存,一部分表示值,另外一部分对值进行放大或者缩小,缩放因子是移动小数点的位置。术语浮点因此得名。
浮点数的优缺点
浮点数可以表示小数,但是浮点数的运算会比整数慢,而且精度会降低 ## C++算术运算符 运算符的优先级和结核性 算术运算符遵守通常的代数优先级,也就是先乘除,后加减。也可以使用括号来优先级。 但是有时候还需要看操作数的结合性。
运算符重载 我们可以很简单的发现,在不同的情况下,除法运算符会表示不同的运算,这就是运算符重载的情况了,C++会根据不同的上下文来确定运算符的额定义
类型转换 由于有十一种整型和三种浮点类型,那么计算机需要处理大量的不同情况,为了解决这种潜在的混乱,C++自动执行类型转换 a.比如将一种类型赋值给另外一种变量 b.表达式里面包含不同类型的时候 c.将参数传递给函数时
强制类型转换 C++还允许强制类型转换,比如(long) I 或者是 long (I)强制类型转换并不会改变变量本身,而是创建一个新的,指定类型的值。第二种格式才是来源于C++,原因在于,新格式要让强制类型转换就像是函数调用一样。
Auto 声明 C++11新增的一个工具,让编译器能够通过初始值的类型来推断变量的类型,在初始化声明中,如果使用关键字auto,而不指定变量的类型,编译器将把变量类型设置为初始值相同;
总结
C++基本类型分为两种,一种是存储整数值,另外一种是存储浮点格式的值,整型之间通过储值使用的内存量和有无符号来区分,还有一种 wchar_t宽字符类型 字符通过数值编码来表示 C++运算符通过优先性和结合性来确定先执行那种操作。 强制转换,把一种类型转换为另外一种类型。
这就是我这次上传的笔记内容希望期末考试的时候会有帮助吧,😄