На странице печати printf:
l (ell) Следующее целочисленное преобразование соответствует аргументу long int или unsigned long int или следующее преобразование n соответствует указателю на аргумент long intили следующее преобразование c соответствует аргументу wint_t, или следующее преобразование s соответствует указателю на аргумент wchar_t.
и
LA после a, A,Преобразование e, E, f, F, g или G соответствует длинному двойному аргументу.(C99 разрешает% LF, а SUSv2 - нет.)
Итак, вы хотите %Le
, а не %le
Редактировать: Кажется, что некоторые дальнейшие исследования показывают, что Mingw используетсреда выполнения MSVC / win32 (для таких вещей, как printf) - которая отображает long double на double.Таким образом, смешивание компилятора (такого как gcc), который обеспечивает собственный long double с временем выполнения, которое, кажется, не является беспорядком.