我已经看到了在C中将int
投射到double
的两种不同方式:
double double_var = (double) int_var;
double double_var = double(int_var);
这两种方法有什么区别?我何时应该使用另一个?
答案 0 :(得分:2)
作为Jonathan Leffler stated,第一个来自C,第二个来自C ++:
第一个是C风格演员;第二个是通过向构造函数传递double
值来实例化int
。
所以第二个并不是真正的演员而是新实例的创建(所以C ++比C更多)。
如果你只做一些C
那么使用构造函数是不相关的(C中没有面向对象的编程,这是一个C ++特性)。
如果您正在做一些C++
,那么您应该避免使用C风格的强制转换(如@BitTickler所述),因为根据您使用它的值的类型可能会出现问题。 C++
为几种情况提供了几种强制类型。
有关详细信息,请参阅this answer。