首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >static_cast<int> ()和int()哪个强制转换更快

static_cast<int> ()和int()哪个强制转换更快
EN

Stack Overflow用户
提问于 2009-10-23 01:28:05
回答 7查看 4.6K关注 0票数 10

试着看看哪种造型更快(不一定更好):新的c++风格的造型还是老式的C风格造型。有什么想法吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-10-23 01:34:39

如果将int()static_cast<int>()的等效功能进行比较,应该没有任何区别。

使用VC2008:

代码语言:javascript
复制
    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%相同的!

票数 34
EN

Stack Overflow用户

发布于 2009-10-23 02:15:52

没有任何区别。

当涉及到像单类型转换这样的基本构造时,一旦两个构造具有相同的语义,它们的性能将完全相同,并且为这些构造生成的机器代码将是相同的。

票数 4
EN

Stack Overflow用户

发布于 2009-10-23 15:30:51

我相信实际的结果是由实现定义的。你应该在你的编译器版本中检查它。但我相信,在大多数现代编译器中,它也会产生同样的结果。在C++中,你不应该使用C-cast,而应该使用C++ casts -它可以让你在编译时发现错误。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1608732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档