操作
MinGWでlong double型をprintfで表示させる方法¶
30!を表示させるmain.cppで、long double型を正しく表示されないことがある。
正確には「265252859812191058647452510846976.000000」と表示されるはずだが、
「0.000000」と表示されてしまう。
MinGWだと内部でWindowsのruntimeで出力しようとしているのが原因っぽい。 Windowsだとsizeof(long double) 8だけど、MinGWのgccだとsizeof(long double) 16だから不整合が起きる。
解決策は-D__USE_MINGW_ANSI_STDIOのオプションをコンパイル時に指定すればいい。
こうすればANSI規格かなんかになっているstdioを優先して使ってくれるような感じで上手くいくっぽい。
参考情報¶
- 解決策
- 解決しなかった方法
- コンパイルオプション(-ansi)では解決しなかった
- https://teratail.com/questions/181188