Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用%f输出EOF #包括 int main() { printf(“%d”,EOF); }_C_Io_Printf_Eof_Format Specifiers - Fatal编程技术网

C 使用%f输出EOF #包括 int main() { printf(“%d”,EOF); }

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

生成-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
signed
)类型。您不应该使用错误的格式说明符来打印
int
,否则它将调用未定义的行为。

而且大多数编译器都能够警告您(例如,使用
gcc-Wall
编译有问题的代码)@YuHao是的,我认为您是正确的。我不知道;我不记得在哪里了,但我在某处看到使用
%d
打印EOF。我相信这是正确的(没有人反对)。@YuHao;很抱歉那是打字错误。我的意思是当然是签名了。
#include<stdio.h>
int main()
{
    printf("%f",EOF);
}
printf("%f",(float)EOF);