【发布时间】:2010-12-09 15:10:33
【问题描述】:
是的,我知道你不应该在 C++ 中使用 C 风格强制转换,但在某些情况下,我真的认为如果你这样做会更具可读性,例如比较这两个:
d = ((double)i * 23.54) / (d + (double)j);
d = (static_cast<double>(i) * 23.54) / (d + static_cast<double>(j));
哪个更易读?
现在谈谈我的主要问题。显然我更喜欢上面的那个,但我认为有一种方法可以使它更具可读性:
d = (double(i) * 23.54) / (d + double(j));
我的问题是,这会降低效率吗?在这种情况下,编译器会比使用其他方法创建更多的双精度数,还是足够聪明地不这样做?这是否比典型的 C 风格转换更糟糕?
【问题讨论】:
-
在 C++ 中使用 C++ 类型转换,并避免在 C++ 对象上使用 C 样式类型转换。不是重复但有点相关stackoverflow.com/questions/1635897/…
-
+1 好问题,我想我从来没有用过 double(i),我承认它的可读性很好。
-
static_cast<...> 更容易搜索。
-
如果
i和j是int并且d是double,则不需要任何上述转换。 -
嗯,我明白了。但是假设它只是为了论证或可读性而需要的。我的例子很糟糕。
标签: c++ c casting readability