Dlaczego scanf () potrzebuje podwójnego „% lf”, skoro printf () jest w porządku z „% f”?

Dlaczego scanf()potrzebuje l„ %lf” podczas czytania double, kiedy printf()może używać „ %f” bez względu na to, czy jego argumentem jest doublea float? Przykładowy kod: double d; scanf("%lf", &d); printf("%f",