(double) 和 double() 之间的区别

Difference between (double) and double()

本文关键字:double 区别 之间      更新时间:2023-10-16

我认为这个问题并不新鲜,但我在任何地方都找不到答案。

在 c++ 中,(double)myIntdouble(myInt)之间有区别吗?

在 c++ 中 (double(myInt 和 double(myInt( 之间有区别吗?

唯一的区别是句法上的区别。意思是一样的。

后一种"功能"语法不能用于复合类型:int*(x)不起作用。

(double)myInt是从intdouble的类型转换。在现代C++中,强烈建议使用static_cast<double>(myInt).

double(myInt)调用double的"构造函数",它也进行类型转换。

本质上,它们是相同的,并且将产生相同的 ASM 输出。

检查以下代码:

#include <iostream>
int main() {
int a = 5;
double b(a);           // line 1
double c = (double)a;  // line 2
return 0;
}

两行的结果是相同的 ASM:

cvtsi2sd        xmm0, DWORD PTR [rbp-4]
movsd   QWORD PTR [rbp-24], xmm0

在这里查看