右值可以是常量、变量、表达式等,只要运行到该部时,右值时确定的就可以。
C++较C语言新增的一个初始化方法:int wrens(112);
另外还有使用{}:
int wrens = {112};
int wrens{112};//省略=
int wrens = {};//空则初始化为0
int wrens{};//同样省略=
注意:一般对数据或结构初始化较多使用{},对单值变量初始化使用较少。使用{}可以防范强制类型转换导致错误。
列表初始化不允许缩窄(narrowing),即变量的类型可能无法表示赋给它的值。例如,不允许将浮点型转换为整型。在不同的整型之间转换或将整型转换为浮点型可能被允许,条件是编译器知道目标变量能够正确地存储赋给它的值。例如,可将long变量初始化为int值,因为long总是至少与int一样长;相反方向的转换也可能被允许,只要int变量能够存储赋给它的long常量。
int x={6};
char ch = {x};//不允许这种装换,在编译器看来,x是一个变量,其值可能很大。编译器不会跟踪下述阶段可能发生的情况:从x被初始化到它被用来初始化ch。