初学c,Devc++5.11 运行以下代码

cwr31 2016-08-07 11:52:19
看的c primer plus , 照着书敲下这段代码:
# 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 ("And it's %a in hexadecimal, powers of 2 notation\n", aboat);
printf ("%f can be written %e\n", abet, abet);
printf ("%Lf can be written %Le\n", dip, dip);






return 0;
}

运行结果dip 值出错:0.000000 can be written 1.133023e-317
请问问题出在哪里,是因为编译器还是硬件。劳烦大神指点,不胜感激!
...全文
1150 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hijack00 2016-08-27
  • 打赏
  • 举报
回复
long double是c99新增的类型,好像不同编译器对这种类型的支持不一样,我在mingw下测试了好几个版本,long double输出也是不正常,printf("%d", sizeof(long double))得到的结果是12。另一个类似的常见的问题就是64位整型数的输出了,微软用的好像是printf("%I64d", a)而gcc用的好像是printf("%lld", a)。不同编译器之间有些差异
ooolinux 2016-08-09
  • 打赏
  • 举报
回复
楼主可以了解一下 C与C++程序设计学习与实验系统 2013.3
S_million 2016-08-09
  • 打赏
  • 举报
回复
说实话dev-c++运行小一点的程序错误还是很多的,换一个吧,以前我也用这个,后来实在受不了了
赵4老师 2016-08-08
  • 打赏
  • 举报
回复
printf里面的%和变量的一一对应关系 scanf里面的%和变量以及变量前加不加&的一一对应关系 是C代码中非常容易出错的地方,而且通常编译还不出错。 所以在编译源代码之前值得专门仔细检查一遍甚至多遍。
小灸舞 版主 2016-08-07
  • 打赏
  • 举报
回复
vs下是可以的
ooolinux 2016-08-07
  • 打赏
  • 举报
回复
引用 3 楼 u010165006 的回复:
%Lf l是大写还是小写?
VC 6.0试了下两种都是正确的。
ooolinux 2016-08-07
  • 打赏
  • 举报
回复
%Lf l是大写还是小写?
paschen 2016-08-07
  • 打赏
  • 举报
回复
lf 对应的类型是double
zycxnanwang 2016-08-07
  • 打赏
  • 举报
回复
我刚才拿VS2013,运行了你的程序,结果如下,估计是编译器的问题!

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧