C语言 浮点型EOF值[重复]

hs1ihplo  于 2023-08-03  发布在  其他
关注(0)|答案(1)|浏览(86)

此问题在此处已有答案

What happens when I use the wrong format specifier?(2个答案)
19天前关闭
在Kernighan和里奇的C书中,我被要求写一个程序来打印EOF的值
我这样写是对的:

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

字符串
我得到的答案是-1......但出于好奇,我输入了%f而不是%d。显示0.00000000
为什么会这样?
我得到了我所期望的结果......但后者(以浮点型打印),我出于好奇而这样做,并认为结果应该是-1.0或类似的东西。

nhaq1z21

nhaq1z211#

如果printf的参数与格式不匹配,则调用Undefined Behaviour(UB)。
在传递给printf函数之前,需要将其转换为double:

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

字符串

相关问题