c - printf 的这个结果说明了什么?

标签 c printf

当我运行我构建的程序时,我会定期得到无关的结果。我得到的不是打印 float ,而是:-1.#IO。这个结果说明了什么?除以零?

根据我的经验,如果结果是溢出,那么它应该仍能正确打印,只是一个不正确的值(可能是一些大的负值)。

这是我大部分时间得到的:

enter image description here

这是每 6-7 次运行会发生的情况。

enter image description here

如果我使用常量种子运行程序(假设该种子产生正确的结果),那么一切都会无限期地正常运行。但是,如果我使用随机种子运行,比如 time(0),我往往会看到这个程序在运行时爆炸。

简而言之,有没有人经历过这个结果?只是寻找一个起点来深入研究代码。

最佳答案

在 Windows 上,无穷大打印为 1.#INF。标准库中的一个怪癖意味着将其四舍五入到小数点后三位得到 1.#IO('F' >= '5',因此它会增加 'N')。

同理,-1.#IO是负无穷大。

是的,您可以通过除以零得到这个结果。

关于c - printf 的这个结果说明了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22005257/

相关文章:

c - * 对于结构是非法的吗?

f# - 我可以使用 StringFormat 作为 TextWriterFormat 吗? kfprintf/kprintf 用法

arrays - 在 C 中只打印一次数组中的所有元素?

c - 使用 getaddrinfo() 仅在 DNS 超时时第一次检查 nscd 缓存

c - 在 ubuntu 上使用 execve 启动 Gtk 程序时出现 "Gtk-WARNING **: cannot open display: "

string - Dart有sprintf,还是只有插值?

c - 如何在 C 中打印引号?

php - 转换为 sprintf() 查询

c - 用 Python/C API 替换 boost:python 函数包装器后的 std::bad_alloc

c - 'passing file descriptors between processes' 是如何工作的?