数据类型间的转换问题,谁刚我解惑?

m0772 2009-03-22 02:12:22
为什么以下两组的输出结果不一样啊?
printf("%f\n", 1);
printf("%d\n", 1.1);
这个的结果是:0.000000和一个负数

printf("%f\n", (double)1);
printf("%d\n", (int)1.1);
这个的结果是:1.000000和1

对于以上的结果谁帮我详细解释一下原因,或者给我相关资料让我自己去看也行。谢谢!
...全文
91 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞哥 2009-03-22
  • 打赏
  • 举报
回复
支持楼上,与浮点数在内存中的存储形式有关
liqinghua1653 2009-03-22
  • 打赏
  • 举报
回复
printf是一个不定参数的函数, 后面的参数类型是通过format里面的内容来解析。 由于, int型和浮点型数据内存表示不同,当你对一个内存表示int型数据用%f来输出, 结果肯定不对, 反过来也是不对的。

nuoshueihe 2009-03-22
  • 打赏
  • 举报
回复
我想存在一个精度高低的问题
帅得不敢出门 2009-03-22
  • 打赏
  • 举报
回复
double请用%ld
hust_terry 2009-03-22
  • 打赏
  • 举报
回复
这个问题看C语言相关的默认类型转换就行了
hust_terry 2009-03-22
  • 打赏
  • 举报
回复
printf("%f\n", 1);

这个应该会报错吧?

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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