幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2496|回复: 6

[通用编程] [求助]输出问题

[复制链接]

1

主题

7

帖子

79

积分

②入门

积分
79
发表于 2007-5-26 20:08:08 | 显示全部楼层 |阅读模式
  1. #include <stdio.h>
  2. int main()
  3. {
  4.   float f=5.75;
  5.   printf("f1=%f,f2=%d,f3=%f",f,f,f);
  6.   return 0;
  7. }
复制代码
输出:f1=5.750000,f2=0,f3=0.000000
问题:为啥f3=0.000000,而不是5.750000?难道"f2=%d"时把"f"赋值为0?
回复

使用道具 举报

20

主题

197

帖子

2641

积分

⑥精研

积分
2641
QQ
发表于 2007-5-26 20:49:50 | 显示全部楼层
%D是整型格式输出,无法实现.....
签名要少于60,SO,i haven't upload my pic
回复 支持 反对

使用道具 举报

1

主题

7

帖子

79

积分

②入门

积分
79
 楼主| 发表于 2007-5-26 20:54:14 | 显示全部楼层
那是我有意写成%d的,我想了解下程序遇到这种情况时是如何处理
ls你指的无法实现,是指什么?
回复 支持 反对

使用道具 举报

20

主题

197

帖子

2641

积分

⑥精研

积分
2641
QQ
发表于 2007-5-26 20:57:04 | 显示全部楼层
格式化输出时要求格式对应,所以无法实现
签名要少于60,SO,i haven't upload my pic
回复 支持 反对

使用道具 举报

1

主题

7

帖子

79

积分

②入门

积分
79
 楼主| 发表于 2007-5-26 20:58:38 | 显示全部楼层
但为什么能通过编译,并输出:f1=5.750000,f2=0,f3=0.000000 [s:3]
回复 支持 反对

使用道具 举报

20

主题

197

帖子

2641

积分

⑥精研

积分
2641
QQ
发表于 2007-5-26 21:00:45 | 显示全部楼层
这里是无法检查的
签名要少于60,SO,i haven't upload my pic
回复 支持 反对

使用道具 举报

20

主题

197

帖子

2641

积分

⑥精研

积分
2641
QQ
发表于 2007-5-26 22:09:43 | 显示全部楼层
修正一下,查找了一下关于printf()资料,在int printf(format, ...)中,格式化字符的内容以栈形式保存,在上述问题中,由于格式化输出时的%D指向,导致在使用栈时,指针调用第二参数时使用的是整形指针,导致错误的发生,检查机制使其返回为零,而接下来的因为上级的整形调用错误,促使指针的指向错误,全部都会有归零操作
签名要少于60,SO,i haven't upload my pic
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-4-28 07:25 , Processed in 0.032058 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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