| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1555 人关注过本帖
标题:请教%f和%d的问题
只看楼主 加入收藏
terry6677
Rank: 1
等 级:新手上路
帖 子:45
专家分:5
注 册:2015-6-29
结帖率:80%
收藏
已结贴  问题点数:7 回复次数:5 
请教%f和%d的问题
请问为什么红色的这行里面,只要把第一个“%f”改成“%d”,结果就会变成0 years later is -565632(这个负数不一定是这个值,我打个比方),总之就是变成%d之后结果就离谱了。请给我讲一下。谢谢。
#include <stdio.h>
#include <math.h>
int main()
{
    float p,r,n;
    r=0.09;
    scanf("%f",&n);
    p=pow(1+r,n);
    printf("%f years later is %%%f\n",n,p);
    return 0;
}
搜索更多相关主题的帖子: include return 
2015-07-12 16:59
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:2 

书中有答案!
先问书,在问人!
不然,别人告诉你为什么你也是半懂

2015-07-12 17:50
受伤的菜包子
Rank: 1
等 级:新手上路
帖 子:1
专家分:2
注 册:2015-7-13
收藏
得分:2 
%d指的是int,整实型。也就是整数。%f指的是float,浮点型,也就是带小数的
2015-07-13 09:41
丢教授
Rank: 2
等 级:论坛游民
帖 子:7
专家分:20
注 册:2015-7-12
收藏
得分:2 
新来的  冒个泡
2015-07-13 11:49
陨灭
Rank: 2
等 级:等待验证会员
帖 子:44
专家分:65
注 册:2013-4-21
收藏
得分:2 
这个问题咋一看很简单,就是类型不匹配,但是仔细思索反而搞不明白了,float和int都是4个字节,即使参数匹配有问题,但由于长度一样,所以按理说对第一个参数的读取不会影响第二个,而事实上却是影响的。由此可以想到,将char压入栈后以%d取出,依然不会对后面参数造成影响,尽管char和int长度不对等,大概是printf函数内部会有一定的判断机制,或者编译器的处理了,这里提到的影响大概有类似的情况。我实力有限,实在帮不到楼主,只能坐等高手解答了。

1@w-h.win
2015-07-13 17:42
gwshow
Rank: 1
来 自:河南郑州
等 级:等待验证会员
帖 子:3
专家分:0
注 册:2015-7-15
收藏
得分:0 
我也实在看不明白

努力学习C语言。
2015-07-16 13:55
快速回复:请教%f和%d的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016683 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved