c - 使用 %f 输出 EOF

标签 c io printf eof format-specifiers

#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);

关于c - 使用 %f 输出 EOF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30731880/

相关文章:

python - TensorFlow 检查点保存和读取

c - 作为 printf 占位符的 %0.2lf 和 %.2lf 有什么区别?

r - sprintf 在四舍五入后将减号加零

c - 非常长数字的数据类型

c - 在 C 中右移带分配的数组(中止陷阱 : 6)

c++ - 并发状态文件处理具有多个过程,超出了我们对Linux和Windows的控制范围

c++ - 输出小数点后的两位数

c - 奇怪的宏定义问题

c - 如何在 C 中指向不兼容的指针类型?

java - 如何不计算文本文件中的控制字符