关于浮点数据的返回

WaterWalker 2006-11-10 11:20:09
#include <stdio.h>

//#include "mm.c"

void main()
{
int i;
double d;

i = yy();
d = xx();
printf("%d, %f \n", i, d);
}


mm.c文件:

double xx()
{
return 1.5;
}

int yy()
{
return 33;
}


-----------
输出数据:
33, -858993460.000000

返回int型成功,返回double的出错。
如果包含 mm.c文件,则两个都能成功。
这是为什么?

上面程序在VC6与linux,AIX下都测试过,都是int成功,double出错。。(double返回值不同)
...全文
273 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
yx_05 2006-11-10
  • 打赏
  • 举报
回复
不过我想问题应该是,没有对函数原型进行声明的原因!把函数改成以下内容就能够得到正确的答案了。

#include <stdio.h>
//#include "callFun.c"

int returnInt();
double returnDou();

int main()
{
int nNum = 0;
double dNum = 0.0;

nNum = returnInt();
dNum = returnDou();

printf("nNum=%d, dNum=%f\n", nNum, dNum);

return 0;
}

callFun.c文件:

int returnInt()
{
return 17;
}

double returnDou()
{
return 2.1;
}
yx_05 2006-11-10
  • 打赏
  • 举报
回复
我把楼主的代码在我的vc下试了一下,真的是这样。很纳闷!!
WaterWalker 2006-11-10
  • 打赏
  • 举报
回复
thanks
goodluckyxl 2006-11-10
  • 打赏
  • 举报
回复
刚刚没看到你出现问题的情况
是因为未指定函数原型
这个问题我在ads中遇到过很多不过情况不是非常一样
比如原型为int,但是在使用时写成unsigned int运行时会出现未知的问题
那时不知所以然
blue_zyb 2006-11-10
  • 打赏
  • 举报
回复
在VC下,不是会有这两条warning吗?
warning C4013: 'yy' undefined; assuming extern returning int
warning C4013: 'xx' undefined; assuming extern returning int

所以,对于没有申明原型的函数,就会assuming returning int,那么对于接收double返回值的
函数xx就会出错了
goodluckyxl 2006-11-10
  • 打赏
  • 举报
回复
xx' undefined; assuming extern returning int
问题就是未制定外部连接,编译器自动默认为int返回
WaterWalker 2006-11-10
  • 打赏
  • 举报
回复
vc
gcc
goodluckyxl 2006-11-10
  • 打赏
  • 举报
回复
你用的什么编译器
我使用ads vc都是可以正确返回
WaterWalker 2006-11-10
  • 打赏
  • 举报
回复
原因是什么呢?
谁来解释下。
我啃 2006-11-10
  • 打赏
  • 举报
回复
包含进去了什么问题都不会有的
WaterWalker 2006-11-10
  • 打赏
  • 举报
回复
如果做包含确实可以。
写。h文件也可以
我啃 2006-11-10
  • 打赏
  • 举报
回复
可能是被加到了工程里面,VC自己查找,了,但是不建议这么写!!!,没有正确的调用
造成你问题的原因可能是:
自动查找后优化器进行了优化,将INT返回的作为了常数(这个是可能的)
但是DOUBLE就不能作为常数(存储结构的问题)
所以出来了异常值

猜测而已
WaterWalker 2006-11-10
  • 打赏
  • 举报
回复
//#include "mm.c"
这个有注释掉吗??
myfriend023 2006-11-10
  • 打赏
  • 举报
回复
33,1.500000
WaterWalker 2006-11-10
  • 打赏
  • 举报
回复
VC里面可以自动寻找
linux与aix下写MAKEFILE
myfriend023 2006-11-10
  • 打赏
  • 举报
回复
VS下运行完全正确
我啃 2006-11-10
  • 打赏
  • 举报
回复
……不包含MM.C怎么有yy(),xx()的定义???

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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