printfとscanf
変換指定文字は似ているようで、ちょっと違います
似ているようでちょっと違う変換の代表格はf変換かと思います
f変換は、
scanfではfloat型へのポインタ扱い
printfではdouble型の変数扱い
そのため、scanfでdouble型を読み込むときは、フラグとしてlを付ける必要があります
printfでは、フラグlは、整数変換時にlong扱いをするというフラグになり、f変換での扱いは定義されていません
1: float f;
2: double d;
3: scanf("%f", &f);
4: scanf("%lf", &d);
5: printf("%f", f);
6: printf("%f", d);
注意
フラグlには他にも役割があり、上述したものだけではありません
詳しくはANSIやC99などを各自調べてください