C 使用%f输出EOF #包括 int main() { printf(“%d”,EOF); }
生成-1,这很好,但是C 使用%f输出EOF #包括 int main() { printf(“%d”,EOF); },c,io,printf,eof,format-specifiers,C,Io,Printf,Eof,Format Specifiers,生成-1,这很好,但是 #include<stdio.h> int main() { printf("%d",EOF); } #包括 int main() { printf(“%f”,EOF); } 产量为0.000。当预期输出为-1.000时,如何解释这一点?在printf()调用中为任何特定参数使用错误的格式说明符 EOF的类型为int。只能对int类型变量使用%d FWIW,如果您想要int的浮点表示,您必须cast变量(但我个人建议避免这种情况) EOF属于int
#include<stdio.h>
int main()
{
printf("%d",EOF);
}
#包括
int main()
{
printf(“%f”,EOF);
}
产量为0.000。当预期输出为-1.000时,如何解释这一点?在
printf()调用中为任何特定参数使用错误的格式说明符
EOF
的类型为int
。只能对int
类型变量使用%d
FWIW,如果您想要int
的浮点表示,您必须cast
变量(但我个人建议避免这种情况)
EOF
属于int
(signed
)类型。您不应该使用错误的格式说明符来打印int
,否则它将调用未定义的行为。而且大多数编译器都能够警告您(例如,使用gcc-Wall
编译有问题的代码)@YuHao是的,我认为您是正确的。我不知道;我不记得在哪里了,但我在某处看到使用%d
打印EOF。我相信这是正确的(没有人反对)。@YuHao;很抱歉那是打字错误。我的意思是当然是签名了。
#include<stdio.h>
int main()
{
printf("%f",EOF);
}
printf("%f",(float)EOF);