printf 와 scanf 를 사용할 때, 소수에 대해서 무조건 %f 를 사용한다고 알고 있었는데, 책을 읽어보니 다르내요.

%f : float , printf 에만 가능
%lf : double , scanf 에사만 가능
%Lf : long double, 모든 컴파일러에서 사용가능한 것은 아니다.

%f 서식은 double과 float 를 출력할 수 있는데, C의 인수 전달에 내장된 자동 전환 때문에 가능한 일이다.

라고 나와 있군요.

요즘 시대에 printf 와 scanf 를 그대로 사용할 일은 없지면 fprinf 나 sscanf 같은 약간 변형된 형태를 사용할 때 조심해야 할 것 같군요.