2017-10-03 8 views
-5
#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です。理由はどうですか? */なぜPow関数は予期しない値を返しますか?

+2

捕虜は、二重なので、uは%F –

答えて

5

使用しているpowの過負荷の戻り値の型はdoubleあるので、あなたのコードの動作は、無効なprintf書式指定子に定義されていません。

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

+0

のstd :: coutの使用を検討してください必要があります。ルークが出力するタイプについて気にしないでください。 – schorsch312

関連する問題