在前面的第4.4节--隐式类型转换(强制)中,您了解到编译器有时会隐式地将值从一个数据类型转换为另一个数据类型.。当您希望将一个数据类型的值提升到更大的类似数据类型时,使用隐式类型转换系统是很好的.。
许多新的程序员尝试这样的东西:浮点F = 10 / 4;。然而,因为10和4都是整数,没有晋升发生。整数除法在10 / 4上执行,产生值为2,然后隐式转换为2,并分配给f!
如果您使用的是字面值(如10,或4),用浮点面值(或等于或10)替换一个或两个整数的文字值将导致两个操作数转换为浮点值,除法将使用浮点数学来完成.。
变量F最终将值2。我们如何告诉编译器,我们想使用浮点除法而不是整数除法?答案是使用类型转换操作符(通常称为一个转换)来告诉编译器做显式类型转换.。一个铸造代表一个明确的要求由程序员做一个类型转换。
型铸造
在C++中,有5种不同类型的转换:C风格转换,静态模型,动态模型,并将const,reinterpret cast。
我们将在本课C风格转换和静态模型。动态转换将保存到覆盖指针和继承之后.。
const转换和reinterpret cast一般应避免因为他们在罕见的情况下才有用,可能是有害的如果使用不当。
规则:避免const转换和reinterpret cast的除非你有一个很好的理由去使用它们。
C风格转换
在标准C语言编程中,转换是通过()运算符来完成的,将类型的名称转换为内部。例如:
许多新的程序员尝试这样的东西:浮点F = 10 / 4;。然而,因为10和4都是整数,没有晋升发生。整数除法在10 / 4上执行,产生值为2,然后隐式转换为2,并分配给f!
如果您使用的是字面值(如10,或4),用浮点面值(或等于或10)替换一个或两个整数的文字值将导致两个操作数转换为浮点值,除法将使用浮点数学来完成.。
但是,如果你使用的变量是什么?考虑这种情况:
int i1 = 10;
int i2 = 4;
float f = i1 / i2;
变量F最终将值2。我们如何告诉编译器,我们想使用浮点除法而不是整数除法?答案是使用类型转换操作符(通常称为一个转换)来告诉编译器做显式类型转换.。一个铸造代表一个明确的要求由程序员做一个类型转换。
型铸造
在C++中,有5种不同类型的转换:C风格转换,静态模型,动态模型,并将const,reinterpret cast。
我们将在本课C风格转换和静态模型。动态转换将保存到覆盖指针和继承之后.。
const转换和reinterpret cast一般应避免因为他们在罕见的情况下才有用,可能是有害的如果使用不当。
规则:避免const转换和reinterpret cast的除非你有一个很好的理由去使用它们。
C风格转换
在标准C语言编程中,转换是通过()运算符来完成的,将类型的名称转换为内部。例如:
2
3
int i1 = 10;
int i2 = 4;
float f = (float)i1 / i2;