#include<stdio.h>
int main()
{
printf("%d",EOF);
}
生成-1,这完全没问题,但是
#include<stdio.h>
int main()
{
printf("%f",EOF);
}
产生0.000。当预期输出为-1.000时,有人能解释这个吗?
答案 0 :(得分:5)
对printf()
中的任何特定参数使用错误的格式说明符会调用undefined behaviour。
EOF
的类型为int
。您只能将%d
用于int
类型变量。
FWIW,如果你想要一个int
的浮点表示,你必须cast
变量(但我个人建议避免这个)
printf("%f",(float)EOF);
答案 1 :(得分:5)
EOF
属于int
(signed
)类型。您不应该使用错误的格式说明符来打印int
,否则它将调用未定义的行为。