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

veh*_*zzz 9 c c++ performance

试着看看哪个演员表更快(不是更好):新的c ++案例或旧时尚的C样式演员.有任何想法吗?

Ara*_*raK 34

如果你比较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 
Run Code Online (Sandbox Code Playgroud)

显然,它是100%相同!

  • +1.装配总是很适合这样的事情. (8认同)
  • -1(如果可以的话).这显然不是.你的答案证明它只在某些版本的VS2008中是相同的. (2认同)