双重类型与双重功能

时间:2016-02-02 01:37:09

标签: c casting

我已经看到了在C中将int投射到double的两种不同方式:

double double_var = (double) int_var;
double double_var = double(int_var);

这两种方法有什么区别?我何时应该使用另一个?

1 个答案:

答案 0 :(得分:2)

作为Jonathan Leffler stated,第一个来自C,第二个来自C ++:

第一个是C风格演员;第二个是通过向构造函数传递double值来实例化int

所以第二个并不是真正的演员而是新实例的创建(所以C ++比C更多)。

如果你只做一些C那么使用构造函数是不相关的(C中没有面向对象的编程,这是一个C ++特性)。

如果您正在做一些C++,那么您应该避免使用C风格的强制转换(如@BitTickler所述),因为根据您使用它的值的类型可能会出现问题。 C++为几种情况提供了几种强制类型。

有关详细信息,请参阅this answer