1、将一种类型的值赋值给另一种类型的变量,则自动转化为接收类型的变量。
2、表达式中包含不同类型时,对值进行转换。
在计算表达式时,C++将bool、char、unsigned char、signed char和short值转化为int,true转化为1,false转化为0,这些称为整形提升(integral promotion)。
不同类型进行算数运算时,(1)如果有一个操作数类型为long double,则将另一个操作数类型转变为long double;
(2)否则,如果有一个操作数类型为double,则将另一个操作数转化为double;
(3)否则,如果有一个操作数类型为float,则将另一个操作数转化为float;
(4)否则,说明操作数都是整形,因此执行整形提升。
(5)在这种情况下,如果两个操作数都是有符号或都是无符号的,且其中一个操作数级别比另一个高,则转换为较高级别的类型;
(6)若果一个有符号另一个无符号,且无符号操作数级别高,则转化为无符号数所属类型;
(7)否则,如果如果有符号类型可表示无符号类型的所有可能取值,则转化为有符号操作数所属类型;
(8)否则,将两个操作数都转化为有符号类型的无符号版本(对默认有符号的类型加限定词unsigned当无符号类型用)。
注释:整型级别从高到低依次为:longlong,long,int,short,signed char=char=unsigned char。
3、将参数传递给函数时,对值进行转换。
4、强制类型转换
int th=8;
long (th);或 (long)th;第一种为C++风格,后者为C典型风格。
static_cast<target typename> (value);更严格的强制转换方式。
5、auto声明
auto使编译器根据初始值的类型推断变量类型,形式为 auto vector_name = value;例如:auto z = 8;。