3 回答

TA貢獻1841條經驗 獲得超3個贊
除了錯誤的修飾符之外,gcc的哪個端口可以連接到Windows?mingw使用Microsoft C庫,并且我似乎還記得該庫不支持80位長的double(出于各種原因,Microsoft C編譯器使用64位長的double)。

TA貢獻1893條經驗 獲得超10個贊
從printf聯機幫助頁:
l(ell)后續(xù)的整數轉換對應于long int或unsigned long int參數,或者后續(xù)的n轉換對應于long int參數的指針,或者后續(xù)的c轉換對應于wint_t參數,或后續(xù)的s轉換對應于wchar_t參數的指針。
和
遵循a,A,e,E,f,F,g或G轉換的LA對應于長double自變量。(C99允許%LF,但SUSv2不允許。)
所以,你想要%Le,不是%le
編輯:一些進一步的調查似乎表明Mingw使用MSVC / win32運行時(用于諸如printf之類的東西)-將long double映射為double。因此,將提供本機long double的編譯器(如gcc)與運行時混合在一起似乎并沒有什么問題。

TA貢獻1833條經驗 獲得超4個贊
如果使用的是MinGW,則問題在于默認情況下,MinGW使用I / O響應。Microsoft C運行時提供的格式化功能,該功能不支持80位浮點數(在Microsoft land中為long double
== double
)。
但是,MinGW還附帶了一組替代實現,它們確實支持長雙打。要使用它們,請在函數名稱前加上__mingw_
(例如__mingw_printf
)。根據項目的性質,您可能還想全局#define printf __mingw_printf
或使用-D__USE_MINGW_ANSI_STDIO
(這將啟用所有printf
-family函數的MinGW版本)。
- 3 回答
- 0 關注
- 1126 瀏覽
添加回答
舉報