试着看看哪种造型更快(不一定更好):新的c++风格的造型还是老式的C风格造型。有什么想法吗?
发布于 2009-10-23 01:34:39
如果将int()与static_cast<int>()的等效功能进行比较,应该没有任何区别。
使用VC2008:
double d = 10.5;
013A13EE fld qword ptr [__real@4025000000000000 (13A5840h)]
013A13F4 fstp qword ptr [d]
int x = int(d);
013A13F7 fld qword ptr [d]
013A13FA call @ILT+215(__ftol2_sse) (13A10DCh)
013A13FF mov dword ptr [x],eax
int y = static_cast<int>(d);
013A1402 fld qword ptr [d]
013A1405 call @ILT+215(__ftol2_sse) (13A10DCh)
013A140A mov dword ptr [y],eax 显然,它是100%相同的!
发布于 2009-10-23 02:15:52
没有任何区别。
当涉及到像单类型转换这样的基本构造时,一旦两个构造具有相同的语义,它们的性能将完全相同,并且为这些构造生成的机器代码将是相同的。
发布于 2009-10-23 15:30:51
我相信实际的结果是由实现定义的。你应该在你的编译器版本中检查它。但我相信,在大多数现代编译器中,它也会产生同样的结果。在C++中,你不应该使用C-cast,而应该使用C++ casts -它可以让你在编译时发现错误。
https://stackoverflow.com/questions/1608732
复制相似问题