#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的值?
答案 0 :(得分:0)
一般来说,每种数据类型的长度取决于编译器和计算机。因此float,double和long double的值取决于计算机和编译器,并且在不同的计算机上可能会有所不同
答案 1 :(得分:0)
每个数据类型的大小取决于您的编译器和计算机,如Sandeep所述。 float
和double
几乎总是IEEE浮点和双精度类型,但是long double
的大小因计算机而异。
长整数的三种最常见的大小是80位(这似乎是您的书所使用的大小),64位(与double相同)或128位(这似乎是您的计算机使用的大小)。 / p>
如果没有一本很好的C书,它不能为您提供数据类型的确切大小。
尝试:printf("sizeof(long double): %d\n", (int) sizeof(long double));
来查看计算机上的大小。