LDBL_MIN返回0,LDBL_MAX返回C

时间:2018-09-27 19:11:17

标签: c printf

我正在用C编写一个简单的程序,该程序会打印出值,每种类型的数据在内存中分配的字节数,最大值和最小值。其实我只是长双部分有问题。 简而言之,它不会打印出我分配给我的long double变量的值,仅当在printf函数中单独使用该函数时,sizeof函数才能正常工作,LDBL_MIN值似乎为0,但我不明白我需要使用的一种类型说明符,并且LDBL_MAX值会打印出1.#QNAN。

这是我的代码:

charactersPrinted=printf("\t\t\t--- Long double ---\nValore: %1.6f",x);
printf("\nBytes allocated: %d\n",sizeof(long double));
printf("Minimum value: %g\nMaximum value: %lg\n",LDBL_MIN,LDBL_MAX);
printf("(Characters printed= %d)\n\n\n",charactersPrinted);

1 个答案:

答案 0 :(得分:1)

sizeof是运算符,而不是函数。

%1.6f没有多大意义:最小字段宽度1是多余的,因为%f将始终产生至少一个字符输出。精度为6是多余的,因为无论如何%f都是默认精度。整个内容可以写成%f

%f使用double,而不是long double(应为%Lf)。

%d使用int,而不是size_t(应为%zu)。

%g使用double,而不是long double(应为%Lg)。

%lg使用double,而不是long double(应为%Lg)。

例如参见Linux documentation for printf