3 回答

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

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

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