2017-10-03 15 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

표준 : : cout을 사용을 고려해야합니다. 루크가 출력 할 유형에 대해 신경 쓰지 마십시오. – schorsch312