long double数据类型在C语言中有以下转换说明符:%Le、%LE、%Lf、%Lg、%LG(参考文献)。我写了一个小程序来测试:
#include <stdio.h>
int main(void) {
long double d = 656546.67894L;
printf("%.0Le\n",d);
printf("%.0LE\n",d);
printf("%.0Lf\n",d);
printf("%.0Lg\n",d);
printf("%.0LG\n",d);
return 0;
}
输出结果:
-0
-4E-153
-0
-4e-153
-4E-153
但是都没有给出期望的输出结果,期望的结果是 656547(你可以轻易地理解)。这是什么原因呢?
所使用的编译器是gcc版本3.4.2(mingw-special)。