C++ (double)和double()之间的差异

C++ (double)和double()之间的差异,c++,casting,C++,Casting,我认为这个问题并不新鲜,但我在任何地方都找不到答案 > C++中的DouByMyTin和DouByMyIt有区别吗? > C++中的DouByMyTin和DouByMyIt有区别吗? 唯一的区别是句法。意思是一样的 后一种函数语法不能用于复合类型:int*x不起作用 doublemyInt是从int到double的值。在现代C++中,强烈建议使用STATICE-CASTMILIT. doublemyInt调用double的构造函数,该构造函数也进行类型转换 本质上,它们是相同的,并将产生相同

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

> C++中的DouByMyTin和DouByMyIt有区别吗?

> C++中的DouByMyTin和DouByMyIt有区别吗? 唯一的区别是句法。意思是一样的

后一种函数语法不能用于复合类型:int*x不起作用

doublemyInt是从int到double的值。在现代C++中,强烈建议使用STATICE-CASTMILIT.

doublemyInt调用double的构造函数,该构造函数也进行类型转换

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

检查以下代码:

包括 int main{ INTA=5; 双ba;//第1行 double c=double A;//第2行 返回0; } 两行的结果都是相同的ASM:

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

检查

效果无差异。前者是C风格的演员,通常不受欢迎。后者是构造函数样式的强制转换,通常也不受欢迎。通常提倡的方法是使用静态cast,static_castmyint虽然在这种情况下没关系,但是请使用static_cast来祝福其他人。总是。正如答案所说,doublemyInt和doublemyInt的意思是一样的。但是对于longdouple,它们是不同的。编译器资源管理器是一个很好的工具,谢谢你的链接。您确定doublemyInt调用构造函数吗。我一直认为构造函数只存在于类中。在C++中,double不是一个类吗?@ Neldav内置类型,比如double,没有构造函数,但在构造函数上有这种类型的提醒。检查另一个答案