关于double类型变量给float变量赋值的溢出问题

明月镇魂 2015-03-13 12:14:11
今天看了谭浩强的书,用VC6.0实现了其中一个程序段,如下:
#include<stdio.h>
void main()
{
float f;
double d;
d=123.456789e100;
f=d;
//f=1e1;
printf("f=%f\n",f);
printf("d=%f\n",d);
}


按照以前的认识和书上讲的,将如此大的数赋给一个float变量必定溢出,但是结果如下图:


看最后结果 f和d输出的结果是一样的,请问这是什么情况?

环境是64位win7/VC++6.0
...全文
1053 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_33653754 2016-06-08
  • 打赏
  • 举报
回复
但是编译器应该在编译的时候就报错啊,因为这是自动类型转换已经不能完成命令了。
lvp305703574 2015-11-13
  • 打赏
  • 举报
回复
和编译器没关系,和代码有关系。 格式化 double 的格式 是 “%lf” 而不是 “%f”
qq_28892725 2015-06-26
  • 打赏
  • 举报
回复
求大神指点迷津。
赵4老师 2015-03-13
  • 打赏
  • 举报
回复
明月镇魂 2015-03-13
  • 打赏
  • 举报
回复
引用 1 楼 fly_dragon_fly 的回复:
VC6不会连float和double都傻傻分不清楚吧,这么大的数foat没法放
难道这是VC的bug么?能把一个超范围的数直接放到float变量里?
明月镇魂 2015-03-13
  • 打赏
  • 举报
回复
引用 2 楼 mymtom 的回复:
珍惜生命,远离VC6
版主,我就是随便看看,我记起里没有装VS,这个问题是VC的bug么?
mymtom 2015-03-13
  • 打赏
  • 举报
回复
珍惜生命,远离VC6
fly_dragon_fly 2015-03-13
  • 打赏
  • 举报
回复
VC6不会连float和double都傻傻分不清楚吧,这么大的数foat没法放
黑娃 2015-03-13
  • 打赏
  • 举报
回复
不要再用VC6了,好吗? vs2015都要出来了。用下vs2013吧,实在是太优雅了。
nice_cxf 2015-03-13
  • 打赏
  • 举报
回复
vs2008下溢出了

69,373

社区成员

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

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