long double의 연산값이 - (minus)로 나오는 이유는?

swhong의 이미지

간단히 다음과 같은 코드를 실행시키면

#include <stdio.h>

main()
{
        long double cf = 0.0;

        printf("%g\n", cf + 1);

}

결과는?

-0

로 나옵니다. 이론적으로 이해가 가지 않습니다. 즉, overflow가 일어난 것도 아니고, casting 하지도 않았는데... 전혀 이상한 값이 들어가 있네요?

double로 할 경우에는 정상적인 결과가 나옵니다만... long double인 경우 왜 저러한 결과가 나오는 것일까요? 움, 고수님들의 의견 부탁합니다.

markboy의 이미지

long double 이면 %Lg 를 쓰셔야 합니다.

printf("%Lg\n", cf + 1);

swhong의 이미지

-.-;; 감사...합니다....

심각하게 생각하는 버릇이 때론...

- by swhong in jgdr.net -