查看: 1641|回复: 9
收起左侧

[讨论] 求助....关于C中printf的输出问题(有图有真相)......

[复制链接]
lovefree007
发表于 2010-7-27 11:36:53 | 显示全部楼层 |阅读模式
本帖最后由 lovefree007 于 2010.7.27 16:28 编辑

看下题,a=10,b=3,c=4,d=5,x=2.5,y=10.0;求a+++c-(int)(++y+x--).....很明显笔算结果为1....
  但是编写代码
  #include <stdio.h>
  void main()
  {
   int a=10,b=3,c=4,d=5;
   float x=2.5,y=10.0; //x,y也可定义为double
   printf("%d\n",a+++c-(int)(++y+x--));
  }
  分别将printf格式控制类型字符换成o,x,u,c,f,lf,g看输出结果,会发现...o,x,u,d输出解果均为1,c输出为ASCII为1的字符,其实也是1.....问题出现在后面....f,lf输出结果为0.000000...g输出为5.59733E-308...为双精度...结果被认为是0......
  请问....当以实型输出的时候....结果怎么会出错呢....请高手解答.....
有图有真相:
645201
发表于 2010-7-27 12:08:55 | 显示全部楼层
为什么我按照你的代码,结果只输出了个1
645201
发表于 2010-7-27 12:11:24 | 显示全部楼层
回复 1楼 lovefree007  的帖子
如图 我的是VS2010
lovefree007
 楼主| 发表于 2010-7-27 16:27:24 | 显示全部楼层
回复 2楼 645201  的帖子
看新增加的图片证据...............

   
lovefree007
 楼主| 发表于 2010-7-27 16:27:49 | 显示全部楼层
本帖最后由 lovefree007 于 2010.7.27 16:30 编辑

回复 3楼 645201  的帖子

看新增加的图片证据.....我的是VC++6.0enterprise.......

645201
发表于 2010-7-27 18:27:17 | 显示全部楼层
本帖最后由 645201 于 2010.7.27 18:31 编辑

回复 5楼 lovefree007  的帖子
据我所知,不能在printf中使用%lf
严格地讲,%lf在printf下是未定义的,给你看张图你就明白了
下表列出了printf对于各种格式说明符可以接受的参数类型。




   
lovefree007
 楼主| 发表于 2010-7-27 20:07:22 | 显示全部楼层
回复 6楼 645201  的帖子
多谢....刚才在QQ上已经得到了答案....说的是%f系统转换有误....我怀疑和IEEE745有关.......
劳烦说一下图片出处.....以便于记录深入了解printf......


   
lovefree007
 楼主| 发表于 2010-7-27 20:52:46 | 显示全部楼层
本帖最后由 lovefree007 于 2010.7.27 20:54 编辑

回复 6楼 645201  的帖子

以下是我对这问题比较牵强的解释...你看看能这样解释吗....
int 1
00000000000000000000000000000001
如果以%f输出的话....我估计系统会把以上的二进制数当成IEEE745编码....换成十进制...符号正....尾数为2的-23次方...阶码为-127....所以化成10进制就是1.x e-127....其绝对值小于|3.4e-38|....所以就当成0了....其中X=2的-23次方.....

   
645201
发表于 2010-7-28 19:51:09 | 显示全部楼层
本帖最后由 645201 于 2010.7.28 19:55 编辑

图片地址
http://hi.baidu.com/bgmqk8/blog/item/d688a739e1b986fe3b87ce47.html

再推荐给你一本学C的电子书PDF格式  《你必须知道的495个C语言问题》
http://u.115.com/file/f75e46b3b5      31天有效
lovefree007
 楼主| 发表于 2010-7-29 00:39:16 | 显示全部楼层
本帖最后由 lovefree007 于 2010.7.29 00:41 编辑

回复 9楼 645201  的帖子
多谢....十分感谢.....进你空间看了....原来是高手啊....能留下QQ吗....................以后或许还有问题求救.............

您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-1-12 22:57 , Processed in 0.138117 second(s), 18 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表