Any way faster than pow() to compute an integer power of 10 in C++?

后端 未结 12 896
逝去的感伤
逝去的感伤 2020-12-05 13:25

I know power of 2 can be implemented using << operator. What about power of 10? Like 10^5? Is there any way faster than pow(10,5) in C++? It is a pretty straight-forw

12条回答
  •  半阙折子戏
    2020-12-05 13:52

    Now, with constexpr, you can do like so:

    constexpr int pow10(int n) {
        int result = 1;
        for (int i = 1; i<=n; ++i)
            result *= 10;
        return result;
    }
    
    int main () {
        int i = pow10(5);
    }
    

    i will be calculated at compile time. ASM generated for x86-64 gcc 9.2:

    main:
            push    rbp
            mov     rbp, rsp
            mov     DWORD PTR [rbp-4], 100000
            mov     eax, 0
            pop     rbp
            ret
    

提交回复
热议问题