c - 哪个说明符用于打印 long double 的最大/最小值?

标签 c types floating-point printf format-specifiers

作为一名新的 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,我在终端中得到了这个。

my output

最佳答案

虽然您应该在问题中提供获得的结果,但您的错误可能是使用 %d打印 sizeof 的结果, 应印有 %zu .

这会导致未定义的行为。对于某些平台,printf 的其余部分在堆栈上的参数将被误解,因为 int 的宽度与 size_t 的宽度不匹配.

关于c - 哪个说明符用于打印 long double 的最大/最小值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46038840/

相关文章:

c# - 如何从列表类型中获取模板类型?

c++ - 检查 float 是否为负数的奇怪方法

使用舍入到偶数将整数转换为半精度浮点格式

c - libnl 出现错误 : Invalid Message

c - SysV 信号量是否在文件系统中表示?

c++ - 错误: request for member ‘prev_’ in something not a structure or union

c - 对 _sbrk 的 undefined reference

matlab - 如何在 MATLAB 中获取变量的类型

java - ArrayList 的通用类型和接口(interface)继承的问题

c - 如何在c中获取没有 `scanf()`的整数和浮点输入?