C - format指定类型int但参数的类型为long

-1 c types arguments long-integer

我找不到如何修复这个练习:它是关于学习字符计数(我正在使用Kernighan-Ritchie版本).我的问题栏说:

"warning:format指定类型'int'但参数的类型为'long'[ - Wformat] printf("%1d \n",nc); ~~~ ^〜%1ld"

这是代码:

    #include <stdio.h>

int main()
{
    long nc;

    nc = 0;
    while (getchar() != EOF)
        ++nc;
    printf("%1d\n", nc);
}
Run Code Online (Sandbox Code Playgroud)

我在Mac上使用Qt Creator 3.1.1.Xcode版本6.2(6C131e)上的相同问题.

有帮助吗?提前致谢.

Spi*_*rix 11

正确的格式说明的long是%ld,不是%d.%d期待一个int.

更换

printf("%1d\n", nc);
Run Code Online (Sandbox Code Playgroud)

同

printf("%1ld\n", nc);
Run Code Online (Sandbox Code Playgroud)

解决问题.

  • 只需使用““%ld”`。几乎可以肯定,`1是一个错误,`“%1ld”`是多余且令人困惑的。 (3认同)