作为一名新的 C 编程学习者,我试图了解我应该在 printf 中使用哪个说明符来显示 long double 类型的最大值和最小值。根据以下 StackOverflow 答案,我可以使用 %Lg: https://stackoverflow.com/a/18797417/1536240
但这似乎并不能解决问题。我试过 %e、%f、%Lf、%g 和 %Lg,但没有用。这是我遇到问题的代码的相关部分(我正在做的其他事情工作正常):
printf("**long double**\nStorage size: %d bytes \t Minimum value: %Lg
\t Maximum value: %Lg\n", sizeof(long double), LDBL_MIN, LDBL_MAX);
我在顶部包含了这些头文件:
#include <stdio.h>
#include <limits.h>
#include <float.h>
我有点迷路了。
编辑:很抱歉没有解释输出是什么。我现在正在使用 %Lg,我在终端中得到了这个。
最佳答案
虽然您应该在问题中提供获得的结果,但您的错误可能是使用 %d
打印 sizeof
的结果, 应印有 %zu
.
这会导致未定义的行为。对于某些平台,printf
的其余部分在堆栈上的参数将被误解,因为 int
的宽度与 size_t
的宽度不匹配.
关于c - 哪个说明符用于打印 long double 的最大/最小值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46038840/