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

Isa*_*nte 0 c floating-point printf types 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);
Run Code Online (Sandbox Code Playgroud)

我在顶部包含了这些头文件:

#include <stdio.h>
#include <limits.h>
#include <float.h>
Run Code Online (Sandbox Code Playgroud)

我有点迷失在这里.

编辑:很抱歉没有解释输出是什么.我现在正在使用%Lg,而且我在终端中得到了这个.

我的输出

Pas*_*uoq 7

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

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

  • @IsaacAsante - 当然但`%d`用于计算堆栈上下一个参数的位置.因此它为下一个2 %% Lg`参数计算错误的位置(关闭4个字节). (4认同)