2.1基本内置类型
1.算数类型分为两类:整型(包括字符和布尔类型)和浮点型。
2.不同类型有不同的尺寸:
bool 8位
char 16
short 16
int 16
long 32
longlong 64(c++11)
float 6位有效数字
double 10位有效数字
3.一般来说,float和double分别有7和16个有效位。
4.类型前加unsighed可以得到无符号型。(算数表达试中不要用char或者bool,char有时候是有符号的有时候没有)
5.注意负数与无符号类型的转换!
6.字面值常量:
整型:42; 字符字面值:’a‘; 字符串字面值“hello word!”。
7.转移序列:如换行符: \n
2.2变量
1.初始化不是赋值。
2.默认初始化。
如果定义在函数体内的内置类型的变量没有初始化,则其值未定义。
3.声明与定义。
声明:使得名字为程序所知。想声明而非定义,添加关键字extern。 extern int i; 声明i;
定义:负责创建与名字有关的实体。 int i; 声明并定义i;
4.自定义标识符不能连续出现两个下划线,也不能下划线紧跟大写字母开头。函数体外的标识符不能以下划线开头。
2.3符合类型
1.引用是对象的另一个名字,不能定义引用的引用。引用只能绑定在对象上,不能绑定字面值常量和计算结果。
2.空指针
int * p1 = nullptr; //c++11
int * p2 = 0;
int * p3 = NULL;
2.4const
1.const对象必须初始化。(运行时或者编译时)
2.const只在当前文件有效。想要多个文件共享const对象,要在定义前加extern关键字。
3.把引用绑定在const对象上,叫做对常量的引用.(常量引用的对象可以是非常量)
const int ci = 100;
const int &r1 = ci;
int i = 20;
int & r1 = i;
const int & r2 = i; //(常量引用的对象可以是非常量)
r1 = 0; //正确
r2 = 0; //错误:r2是一个常量引用
4.指向常量的指针不能改变其所指对象的值。存放常量对象的地址只能用指向常量的指针(指向常量的指针可以指向非常量)
5.常量指针必须初始化。把*放在const之前说明指针是一个常量。(即指针指的地址不能改变)
int * const p = π
const double pi = 3.14;
const double *const pip = & pi;//第一个const说明指针指向常量。第二个const说明指针是一个常量。
6.顶层const:指针本身是个常量。(上例中的第二个)
底层const:指针所指的对象是个常量。(上例中的第一个)
7.常量表达式:值不会改变并在编译阶段就能得到结果的表达式。
8.将变量声明为constexpr类型以便由编译器来验证变量的值是否是一个常量表达式。(c++11)
2.5处理类型
1.类型别名。
typedef doubles wages;//传统方法
using SI = Sales_item;//(c++ 11)
2.decltype: 选择并返回操作数的操作类型。
2.6预处理器
#ifndef SALES
#define SALES
..
#endif