vs添加固定代码模块方法
OOP
面向对象编程的本质是设计并且扩展自己的数据类型
简单变量
程序必须记录的三种属性
- 信息将要储存在哪里
- 要储存什么值
- 储存什么类型的信息
注:使用变量声明来表示或者使用取地址符号,下一章节描述。
变量名命名规则
- 名称第一个字不可以是数字
- 双下划线做名称开头或下划线和大写字母做命名开头时,被保留给实现(编译器及其内置资源)使用。
- 一个下划线开头则被保留给是实现,用作全局标识符。
- INSI C中命名可以是六十三个字符,之后字符随意。
- 用两个以上的英文单词做名称时用下划线将两个单词分开或者是第二个单词开始字母开头大写。
- 两个单词的命名规则前最好加上前缀,表示出变量是什么类型的,如 nmyWeight。
整形-short-int-long-long long
整形-就是没有小数部分。整形类型需要不同的位(bit)来储存数值。(-32767~32768)
位与字节
位,字节,字三者的关系是:1字=2字节,1字节=8位,1字=16位。
位(bit):计算机内存的基本单位,
字节(byte):指8位的内存单元。可以用sizeof检查字节长度。
运算符sizeof和头文件climits
sizeof
cout<<" this is"<<sizeof (int)<<"bytes";//对于类型名
cout<<" this is"<<sizeof n_short<<"bytes";//对于变量名使用这种格式输出字节
climits
包含#define INT_MAX 32767意思是预编译指令将int全部替换成32767
头文件climits定义了符号常量来表示类型的限制。CHAR_BIT表示char的位数。c++也可以使用const创建符号常量。
初始化
初始化赋值与函数的声明联合起来
int n_int=INT_MAX;
注:表示声明变量并且将INT_MAX最大值赋值给他。
- 可以使用确定值赋值,如5
- 或者将另一个已经声明的变量赋值给他(前提是这个变量的声明是在这个赋值语句之前)
- 也可以赋值表达式。
注:如果不对变量进行初始值赋值,该变量的值将是相应内存单元保存的值。
c++11初始化方式
int emus={};
int rhea={2};
int psychics{};//等于0
注:这种方式用于数组或者是数据结构。
无符号类型
只能是正值,且unsigned是unsigned int的缩写。
有符号范围是(-32767~+32767)无符号是(0~65535)它们如果超越了限制,值就会在另一端出现,c++不保证上溢或者是下溢。
整形类型的选择
数组一般使用short,虽然int与它长度相同,但是假设要将程序从int为16位转移到32位系统中,则存储int数组的内存将加倍而short的内存将不变,这样可以节省空间。
整形字面值(常量)
c++可以用三种不同方法来书写整数。基数为10基数为8基数为16.第一位数是1~9则是十进制,如果第一位是0,第二位是0~7则是八进制,0x则是十六进制。
数值在计算机当中都是以二进制的方式进行存储。
cout输出的是二进制,如果想输出别的进制的数值,前面提到头文件<iostream>中控制endl换行的输出,它也包含dec(十进制)hex(十六进制)oct(二进制)代码运行如下:
int chest=40;
cout<<hex<<endl;
cout<<"chest="<<chest<<endl;
注:cout<<hex;不会显示在屏幕上。只是提醒cout以什么类型的方式输出。
c++如何确定常量的类型
一般情况下以int方式存储,但是对于没有后缀的十进制数,则选用能够存储这个数的最小类型来储存(int long long long),但对于十六进制或者是八进制(int unsigned int long unsigned long long long unsigned long long)十六进制一般选择unsigend int表示地址。
char类型:字符和小整数
char类型是另一种整型,专门存储字母或者是数字。
成员函数-cout.put()
函数cout.put()是一个重要的oop概念——成员函数,类定义了如何表述和控制一个数据,要通过对象(cout)来使用成员函数,则需要句点(成员运算符)将他们连接起来使用。
cout<<'s';//打印的是ascll码值,而cout.put('s')打印的是s。
const限定符
const type name =value;限定后的值不可以进行修改。
浮点数
浮点数表示带小数部分的数,计算机将他们分成两个部分组成,一部分表示值,另一部分用于对值进行放大或者缩小,缩放因子的作用是移动小数点的位置。(0.231545和100缩放因子-0.231545和10000缩放因子表示相同)。
浮点数的书写
- 直接写小数
- E后面的数字是多少就表示加多少个零
- +n小数点向右移n位
- ~小数点向左移动n位
浮点常量
像8.24通常属于double型,如果希望是float型,则在数的结尾加f,long double则加l。
浮点数的优缺点:他们表示整数之间的值,其次由于缩放因子,他们表示的范围可以大得多,另一方面,浮点运算的速度通常比整数低,且精度低。
c++运算符
除法分支
除法运算符(/):如果两个数都是整数,则进行整数运算,丢弃小数部分,如果其中有一个是小数,则小数被保留,结果是小数。
求模运算符
返回整数除法的余数。
类型转换
c++丰富的类型允许根据需求选择不同的类型,这也使计算机的操作更复杂。c++自动执行的多类型转换:
- 将一种算数类型的值赋给另一种算数类型的变量时,c++将对值进行互换。
(long)so_long=(short)thirty;
thirty变成long型,将一个值赋给取值范围更大的值一般没有问题,反之则可能造成结果错误。
潜在数值转换问题:
- 较大浮点变较小浮点,精度降低,结果不确定。
- 浮点转化成整数,小数部分丢失。
- 较大整型转化成较小整形,只复制右边的字节。
- 注:将0赋给bool时变false,1时时true。
- 表达式中含有不同类型的数值时,c++将值进行互换。
有符号整形按高到低(long long long int int short和signed char)
无符号整形(char signed cahr unsigned char )bool类型最低,wchar_t,char16_t,char_32t类型形同。
- 将参数传递给函数时,c++将对值进行互换。
传递参数类型时通常由++函数原型控制,然而也可以取消函数原型对参数传递的控制,通常将char和short(signed和unsigned)用整形提升,在取消原型影响时,将float转化成double。
- 以{}方式初始化时进行转换。这种初始化常用于给复杂的数据类型提供值列表。(它不允许值缩小)
- 强制类型转换
(long)thorn;
long (thorn);thorn是变量,c++转换方式是这种
注:强制转换不会修改thorn本身,而是创建一个新的,指定类型的变量。
c++引入的四种强制转换运算符
- static_cast<long>(thon)——thon转换成long型。
- 另外四种在十五章介绍。
auto声明
在初始化声明中如果使用auto关键字,而不指定变量的类型,编译器则将变量的类型设置成与初始值相同。
auto n=100;//n is int
注:存在非议。