2014-02-21 3 views
-4

소스 코드가 있습니다. 함수 FUNC의 내용을 알 수 :함수의 내용을 작성해야합니다.

r1=0 r2=0 

답 : :

#include <stdio.h> #include <math.h> float func (void) { // Black box } int main (void) { float f1, f2; int r1, r2; f1 = 5.0f; f2 = func(); r1 = (f1 > f2); r2 = (f1 <= f2); printf ("r1=%d r2=%d\n", r1, r2); return 0; }

메시지를 인쇄하는 기능 FUNC의 내용을 쓸 필요 스포일러 ">

return pow (-5.0, 0.5);

또는

창 0.0/0.0;

이해할 수없는 이유는 무엇입니까? 이 NaN를 반환 대답

return 0.0/0.0; 

에 관한

+0

이것은 일종의 뇌간 맛보기입니까? – ajay

+0

C에서'0.0/0.0'이 무엇을 의미하는지 알고 있습니까? – haccks

+0

@ haccks 아니, 그게 무엇 이니? – dima

답변

1

. 이제이 경우 r1r2이 모두 0이됩니다.

당신이 돌아 오면

return pow(-5.0, 0.5); 

음수의 제곱근은 가상이며, 따라서 실제 부동 소수점 숫자로 표현할 수없는, 그래서 NaN이로 표현된다. 이 경우 r1r2은 모두 0입니다. 또 다른 옵션은, 단지 NaN이를 반환한다는 것입니다

float func (void) 
{ 
    return 0.0/0.0 // return pow(-5.0, 0.5); 
} 

: 같은
당신 기능이 보일 것이다. (<math.h> 포함).

float func (void) 
{ 
    return NAN; 
} 
+1

'pow (-5.0, 0.5)'NaN을 반환합니다. 'double pow (double, double)'은 복소수를 반환하지 않습니다. –

+0

@MartinR; wiki : http://en.wikipedia.org/wiki/NaN :) – haccks

+2

"man pow": pow (x, y)는 NaN을 반환하고 다음에 대한 "유효하지 않은"부동 소수점 예외를 발생시킵니다. 유한 x <0 및 유한 비 y. –

관련 문제