三、变量、初始化
在明白了C++有哪些数据类型以及类型会作何转换之后,需要知道对这些数据类型可以做哪些相关的运算,以及各个运算的优先级。
变量
我们使用 变量 是在对一段存储空间进行命名以供程序操作。变量需要知道其数据类型。前面提过,数据类型为每一个变量明确了占据空间的大小和布局方式,也定义了其能参与的所有运算。
变量(variable) 和 对象(object) 一般可以互换使用.
变量的初始化
变量的定义没什么特殊的,在此也不做过多的记录。但是在定义变量的时候,我们往往需要明确变量的类型同时为其初始化,而这是一个相当复杂的问题。
整型的初始化
如果我们想要初始化 整型 类型有如下的语句:
以int为例
int i = 0;
int i = {
0};
int i{
0};
int i(0);
这种花括号的形式被称为 列表初始化 (list initialization) 。这种初始化有个重要特点:倘若存在丢失信息的风险,则编译器会报错。
long double ld = 3.1415926536;
int a{
ld},b = {
ld}; //报错,因为类型转换存在丢失信息的风险
int a = ld, b(ld); //正确,但是会因此损失精度
引用的初始化
通过将声明符写成 &d 的样式来定义引用类型,他必须被初始化。
一般初始化变量的时候,初始值是被 拷贝 到新建的对象中的。但是引用不是,系统将引用与初始值 绑定 。因此引用无法更换与之绑定的对象。
int ival = 1000;
int &refval = ival; //这是正确的,refval指向ival,是ival的另外一个名字
int &refval2; //这是错误的,因为引用必须初始化
int &refval3 = 4; //错误,引用不可与字面值绑定