简单的事情:我想“转换”,例如一个float
进入double
。目前我知道的有三种方式:
float v = 4.2f;
-
double u = (double)v;
-
double u = double(v);
-
double u = static_cast<double>(v);
-
double u(v);
编辑:只是将其视为第四个选项!
这些是相同的还是有任何细微的差别?您建议使用什么?
请注意,这个问题仅与 int、char、float 等基本类型相关,与指针、POD 或类无关。
最佳答案
double u = (double)v;
和double u = static_cast<double>(v);
是等价的,因为这两种情况都使用标准转换。然而double u = double(v);
创建一个临时 double 对象(无论如何都可以对其进行优化),然后将其用于初始化 u
。但既然无论如何都会使用所有三种类型的强制转换来创建临时对象,那么是的,它是相同的。
从三static_cast
应该是首选。多输入几个字符,但从长远来看,它更好,因为首先您明确指定了转换类型,而且由于转换通常是可疑的,因此您可以以非常生动的方式进行操作
关于c++ - 基本类型的显式类型转换 "operators"之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4194821/