2016-06-08 2 views
0

코드 : 블록 또는 Eclipse에서 코드를 컴파일하고 실행하면 콘솔에 모든 이중 변수가 0.000000으로 표시됩니다. 이 같은 경우에도 간단한 코드로 발생콘솔은 모든 double에 대해 0 만 표시합니다.

:

double a = 1.0; 
printf("%lf", a); 

콘솔을 보여줍니다 : 0.000000

이 비록 int 변수 발생하지 않습니다. 내 컴파일러가 잘못된 방법으로 설정되어 있습니까?

+1

'% f'이 (가)'double'으로 충분하지 않습니까? –

+0

% f로 해보았습니다. 이상하게 작동합니다. 하지만 왜 그것으로 % lf 함께 작동하지? O.o – klippklar

+3

C89는 f가 나올 때까지 정의되지 않은 동작으로 이어집니다. 그리고 C90은 아마 똑같이 말합니다. C99은 f가 효과가 없기 전에 말합니다. –

답변

1

%f을 사용하여 double 값을 인쇄 할 수 있습니다. %lf이 아닙니다. 에

C11을 인용

장 §7.21.6.1,

l (ell)

... 또는 아무런 영향을주지 않는 아래 a, A, e, E, f, F, g, 또는 G 변환 지정자.