标题:为什么出现这样的结果
只看楼主
wrg0709
Rank: 1
来 自:ss
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-12-3
 问题点数:0 回复次数:3 
为什么出现这样的结果
#include<stdio.h>
#include<math.h>
#define s (a+b+c)/2
#define q %f
main()
{
double a,b,c;
scanf("q q q",&a,&b,&c);
printf("q",sqrt(s*(s-a)*(s-b)*(s-c)));
}

#include<stdio.h>
#include<math.h>
#define s (a+b+c)/2
main()
{
double a,b,c;
scanf("%lf %lf %lf",&a,&b,&c);
printf("%lf",sqrt(s*(s-a)*(s-b)*(s-c)));
}

都输入3 4 5 第一个结果为 运行完后的结果是  floating point error : overflow
第2个结果为6
这是为什么?
搜索更多相关主题的帖子: include 结果 define double main 
2008-03-17 17:29
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
得分:0 
/*一些宏定义的使用还得在实践中逐渐琢磨领会*/
#include<math.h>
#include<stdio.h>
/*#define q "%lf"*/
#define s (a+b+c)/2

main()
{
double a,b,c;
scanf("%lf %lf %lf",&a,&b,&c);
printf("%lf",sqrt(s*(s-a)*(s-b)*(s-c)));
}
2008-03-17 18:16
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
#include<stdio.h>
#include<math.h>
#define s (a+b+c)/2
#define q "%lf"
#define qq "%lf %lf %lf"
main()
{
double a,b,c;
scanf(qq,&a,&b,&c);
printf(q,sqrt(s*(s-a)*(s-b)*(s-c)));
}

学习需要安静。。海盗要重新来过。。
2008-03-17 18:20
qfyzy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:380
专家分:86
注 册:2008-2-17
得分:0 
在“”里的宏不会展开的,连在一起的“”会变成一个。

#define k "%d"
printf(kk,3,4);
会展开成printf("%d%d",3,4);

当对C的经验增加时,它会显的很好用.----Dennis M Ritche如是说
2008-03-17 18:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-203863-1-1.html




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

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