使用 %f 输出 EOF

Output EOF using %f

#include<stdio.h>
int main()
{
    printf("%d",EOF);
}

生成 -1 完全没问题,但是

#include<stdio.h>
int main()
{
    printf("%f",EOF);
}

产生 0.000 。当预期输出为 -1.000 时,有人如何解释这一点?

printf() 中的任何特定参数使用错误的格式说明符会调用 undefined behaviour.

EOFint 类型。您只能将 %d 用于 int 类型的变量。

FWIW,如果你想要 int 的浮点表示,你必须 cast 变量(但我个人建议避免这种情况)

printf("%f",(float)EOF);

EOFint (signed) 类型。你不应该使用错误的格式说明符来打印 int,否则它会调用未定义的行为。