C's pow function refuses to work with variable exponent

后端 未结 5 1477
遥遥无期
遥遥无期 2021-01-17 20:59

Let\'s say I have the following code snippet:

int i; double value;
for(i = 0; i < CONSTANT; i++) {
  value = (double)pow(2, i);
}

Trying

5条回答
  •  余生分开走
    2021-01-17 21:25

    It's a very interesting behavior, and a good learning example.

    To solve your problem, add

    -lm
    

    to your gcc command line (provided you're using gcc). This tells the compiler to link against the math library.

    What seems to be going on, is that if you're using

    pow(2.0, 3);
    

    the compiler realizes this expression evaluates to a constant, and does mere substitution.

    Thus, no library function has to be called.

提交回复
热议问题