首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C PRIMER PLUS 例题3.7有疑问解决方法

2012-04-12 
C PRIMER PLUS 例题3.7有疑问//showf_pt.c 以两种方式显示浮点值#includestdio.hint main(void){float a

C PRIMER PLUS 例题3.7有疑问
//showf_pt.c 以两种方式显示浮点值
#include"stdio.h"
int main(void)
{
float aboat=32000.0;
double abet=2.14e9;
long double dip=5.32e-5;
printf("%f can be written %e\n",aboat,aboat); 
printf("%f can be written %e\n",abet,abet);
printf("%f can be written %e\n",dip,dip);
return 0;
}
图1


dip的结果为什么会是这样?而且书上说打印long double类型需要%Lf %Le %La说明符,为什么这里没有加L?书上的代码也是这样的。如图1(我加了L上去显示结果也是这样,如图2)
图2

printf("%Lf can be written %Le\n",dip,dip);
我上面说了,运行结果没变
--------------------------------------------------------------
还有个问题,第一个print()改成下面这样:
printf("%f can be written %e %a\n",aboat,,aboat,aboat); 

最后一个%a 应该以十六进制式输出浮点数aboat
可输出的结果是a 这是我编译器的问题吗?

[解决办法]
http://www.adintr.com/tools/imageupload.html
可以上传图片
[解决办法]
可能和编译器有关,long double打印的时候用%lf或是%llf试试
[解决办法]
windows是这样

C/C++ code
32000.000000 can be written 3.200000e+0042140000000.000000 can be written 2.140000e+0090.000053 can be written 5.320000e-005请按任意键继续. . .
[解决办法]
将最后一个输出语句改为

printf("%Lf can be written %Le\n",dip,dip);

gcc测试无误。

热点排行