我正在使用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:我觉得人们对理解我的问题的兴趣不如看见我的代表。这就是他们将问题标记为重复的原因。他们并不担心我会以不同的方式提供相同的输入,但会得到不同的结果。