搜尋

首頁  >  問答  >  主體

c++ - 用scanf如何读入long double和unsigned char?

用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]

ringa_leeringa_lee2803 天前1242

全部回覆(1)我來回復

  • PHP中文网

    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 可執行文件)。

    或者使用其他編譯器。

    回覆
    0
  • 取消回覆