为什么Pow功能会返回意外值..?

时间:2017-10-03 10:52:56

标签: c++ pow math.h

#include <stdio.h>
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    int i;
    i = 2;
    printf("%d %d %d\n", i,pow(i,2),pow(i,3));
    return 0;
}

/ * 我希望输出为2,4,8。但显示的输出是2 0 1074790400。任何人都可以解释我的原因...? * /

1 个答案:

答案 0 :(得分:5)

您正在使用的pow重载的返回类型为double,因此由于无效的printf格式说明符,代码的行为未定义。

参考:http://en.cppreference.com/w/cpp/numeric/math/pow