C lang指数长双输出(Mac OS,Xcode)

时间:2018-10-29 04:24:25

标签: c

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

int main()
{
    float num1 = FLT_MAX;
    double num2 = DBL_MIN;
    long double num3 = LDBL_MAX;

    printf("%.2f\n", num1);
    printf("%e\n", num2);
    printf("%Le\n", num3);

    return 0;
}

我正在使用C进行指数表示,但我不知道为什么long double的输出不正确(float和double的输出为

340282346638528859811704183484516925440.00
2.225074e-308

但长双有

1.189731e+4932 (in the book it says 1.797693e+308)

输出是否与每台计算机都不相同?那为什么我的mac拥有long double的唯一不同的值,却没有float和double的值?

2 个答案:

答案 0 :(得分:0)

一般来说,每种数据类型的长度取决于编译器和计算机。因此float,double和long double的值取决于计算机和编译器,并且在不同的计算机上可能会有所不同

答案 1 :(得分:0)

每个数据类型的大小取决于您的编译器和计算机,如Sandeep所述。 floatdouble几乎总是IEEE浮点和双精度类型,但是long double的大小因计算机而异。

长整数的三种最常见的大小是80位(这似乎是您的书所使用的大小),64位(与double相同)或128位(这似乎是您的计算机使用的大小)。 / p>

如果没有一本很好的C书,它不能为您提供数据类型的确切大小。

尝试:printf("sizeof(long double): %d\n", (int) sizeof(long double));来查看计算机上的大小。