gpt4 book ai didi

c - 长双1.#QNAN

转载 作者:行者123 更新时间:2023-12-02 17:45:46 26 4
gpt4 key购买 nike

运行 Tim Bailey 的《C 编程语言和软件设计简介》第 2 章中的以下代码在 Android 上的 C4Droid 中运行良好,但在 Windows 中使用带有 GCC 编译器的 CodeBlocks 会给出 -1.#QNAN0e+000 long double 的上限 (LDBL_MAX)。我理解这意味着“没有这样的数字”,但大概这意味着错误的编码,而不是“没有限制”(我相信正确的答案是 1.797693e+308)。

所以,我检查过的可能原因:

  1. 拼写错误:我没有看到它(而且我还从 CodeBlocks 编辑器中选择了 LDBL_MAX)。

  2. 类型不匹配:我不这么认为(%e 应该没问题)。

  3. LDBL_MAX 未包含在 float.h 中:已包含。

感谢您收到的任何建议

#include <stdio.h>
#include <limits.h>
#include <float.h>

int main (void)
{
printf("Integer range:\t\t%d\t%d\n", INT_MIN, INT_MAX);
printf("Long range:\t\t%ld\t%ld\n", LONG_MIN, LONG_MAX);
printf("Float range:\t\t%e\t%e\n", FLT_MIN, FLT_MAX);
printf("Double range:\t\t%e\t%e\n", DBL_MIN, DBL_MAX);
printf("Long double range:\t%e\t%e\n", LDBL_MIN, LDBL_MAX);
printf("Float-Double epsilon:\t%e\t%e\n", FLT_EPSILON, DBL_EPSILON);
}

最佳答案

如果您读过例如this printf reference您将看到所有不带任何修饰符的浮点格式(包括纯 "%e")均适用于 double 类型。

如果要打印 long double 的值,则需要 L 修饰符前缀,如 "%Le"

格式说明符和类型不匹配会导致 undefined behavior .

关于c - 长双1.#QNAN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53202844/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com