相同输入的math.h中pow的行为差异

时间:2017-09-18 05:59:14

标签: c++

我正在使用Dev C ++ 4.9.9.2和Dev C ++选项中提供的默认编译器。考虑以下两个程序:

第一:

#include <iostream>
#include <math.h>
using namespace std;
int main (){
    cout <<(int)pow (10,2);    //100
    return 0;
}

第二

#include <iostream>
#include <math.h>
using namespace std;
int main (){
    int k = 2;
    cout <<(int)pow (10,k);    //99
    return 0;
}

在Dev C ++ 4.9.9.2附带的编译器中,这是int到被调用pow的数据类型的隐式强制中的错误吗?或者是预期的行为吗?究竟是哪个版本的pow被调用(我试图调试但无法找到被调用的版本)?

注意:如果我们用 cmath 替换 math.h ,程序就不会编译,并警告模糊调用pow (似乎一个更好的条件)。同样在同一系统上的较新版本的Dev C ++中,两个程序的输出都是正确的。

  

编辑1 :我不认为我的问题与this question重复,因为我提供了相同的输入,但得到了不同的结果。 2 k 都是整数。

     

编辑2:我觉得人们对理解我的问题的兴趣不如看见我的代表。这就是他们将问题标记为重复的原因。他们并不担心我会以不同的方式提供相同的输入,但会得到不同的结果。

0 个答案:

没有答案