double d;
scanf("%f", &d);
printf("%f", d);
결과 :입출력
입력 : 10.3
출력 : 0.00000
왜? 나는 %f
가 float
입니다, 출력이 scanf()
10.3 비주얼 스튜디오 2008
double d;
scanf("%f", &d);
printf("%f", d);
결과 :입출력
입력 : 10.3
출력 : 0.00000
왜? 나는 %f
가 float
입니다, 출력이 scanf()
10.3 비주얼 스튜디오 2008
있어야한다고 생각합니다. double
의 경우 %lf
이 필요합니다. 따라서, 입력 10.3
와
#include <stdio.h>
main() {
double d;
scanf("%lf", &d);
printf("%f\n", d);
}
는 10.300000
을 생산하고 있습니다.
% 4.1lf 형식의 문자열 +1 Sergey는 다음을 볼 수 있습니다 : http://www.cplusplus.com/reference/clibrary/cstdio/printf/ – stacker
'% lf'은'scanf()'에 필요하지만'printf() ','% f'는'double'을 의미합니다 (그리고'float'도 인수리스트의 변수 부분에서'double'으로 승격되기 때문에'float'과 함께 작동합니다). '% lf'는'printf()'에 의미가 없습니다. – caf
printf는 vararg 함수이므로 인수 프로모션을 적용 할 필요가 없습니다. 컴파일러는 format string 이상의 인수 유형을 알지 못합니다. % lf가 필요하다고 말했습니다. –
%f
을 %lf
으로 바꾸어보십시오. 은 float
을 처리 할 때 사용되며 double
이 아닙니다. 또는 d
을 float
으로 만들 수 있습니다.
이제 문제가 해결되었으므로 http://stackoverflow.com/questions/2377733/how-does-this-program-work를 통해 더 많은 것을 분명히 알 수 있습니다! – Lazer