用scanf如何读入long double和unsigned char? 语言学得不精,还请众神指点…… 网上找了一下,可是照着打不行啊。。。 以下是代码和编译信息(c++)
#include <cstdio>
int main()
{
unsigned char test;
scanf("%hhu",&test);
printf("%hhu",test);
long double a;
scanf("%Lf",&a);
printf("%lf",a);
}
1625.cpp:9:20: warning: unknown conversion type character 'h' in format [-Wformat]
1625.cpp:9:20: warning: too many arguments for format [-Wformat-extra-args]
1625.cpp:10:20: warning: unknown conversion type character 'h' in format [-Wformat]
1625.cpp:10:20: warning: too many arguments for format [-Wformat-extra-args]
1625.cpp:12:16: warning: unknown conversion type character 'L' in format [-Wformat]
1625.cpp:12:16: warning: too many arguments for format [-Wformat-extra-args]
1625.cpp:13:16: warning: format '%lf' expects argument of type 'double', but argument 2 has type 'long double' [-Wformat]
PHP中文网2017-04-17 11:12:18
國外已經有人提過類似的問題了。 點這裏
MINGW 在 long double 方麵被破壞了。我自己也曾報告過這一點 不久前,總結一下正在發生的事情:
在 Windows 世界中 double 和 long double 是相同的。然而在 MINGW 然而,long double 比 double 大(我不知道更多 具體)它隻能打印 MS Windows 的長雙精度,即 雙倍。
他們正在使用 MS 庫或其他東西。 你有兩個選擇。要麼堅持雙倍,這是相同的 Windows 世界,或使用 DJGPP,它是另一個 GCC 端口(但會創建 32 位 DOS 可執行文件)。
或者使用其他編譯器。