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

-5 c++ math.h pow

#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;
}
Run Code Online (Sandbox Code Playgroud)

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

Bat*_*eba 5

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

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