调用其他文件中的函数,输出一直不正常

Bill_Zhao610 2011-12-16 11:34:30
我在main.c中和other.c中都写了一个Add求和函数,但是other.c文件中的输出一直不对,请各位帮忙看下。
另外我如果把加法函数把float全部改成int就正常了。

main.c 文件代码:
float AddF2(float a ,float b)
{

return a + b;
}

main()
{
float m,n, result,result2;
m = 1;
n = 2;
result2 = AddF2(m,n);
result = AddF1(m,n);
printf("result=%d,result2 = %d",result,result2);
getchar();

}

other.c 文件代码:

float AddF1(float a ,float b)
{

return a + b;
}


输出:
result=-858993460,result2 = 3
...全文
147 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gqjjqg 2011-12-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bill_zhao610 的回复:]
上面printf函数贴错了,我原来写的就是printf("result=%f,result2 = %f",result,result2);
仍然有错。

我在main.c中和other.c中都写了一个Add求和函数,但是other.c文件中的输出一直不对,请各位帮忙看下。
另外我如果把加法函数把float全部改成int就正常了。

main.c 文件代码:
float AddF2(f……
[/Quote]
设个断点,DEBUG下...
Bill_Zhao610 2011-12-16
  • 打赏
  • 举报
回复
上面printf函数贴错了,我原来写的就是printf("result=%f,result2 = %f",result,result2);
仍然有错。

我在main.c中和other.c中都写了一个Add求和函数,但是other.c文件中的输出一直不对,请各位帮忙看下。
另外我如果把加法函数把float全部改成int就正常了。

main.c 文件代码:
float AddF2(float a ,float b)
{

return a + b;
}

main()
{
float m,n, result,result2;
m = 1;
n = 2;
result2 = AddF2(m,n);
result = AddF1(m,n);
printf("result=%f,result2 = %f",result,result2);
getchar();

}

other.c 文件代码:

float AddF1(float a ,float b)
{

return a + b;
}


输出:
result=-858993460,result2 = 3
[Quote=引用 1 楼 ivers0n 的回复:]
printf("result=%f,result2 = %f",result,result2);
[/Quote]
AnYidan 2011-12-16
  • 打赏
  • 举报
回复
google printf
IVERS0N 2011-12-16
  • 打赏
  • 举报
回复
printf("result=%f,result2 = %f",result,result2);
狂且 2011-12-16
  • 打赏
  • 举报
回复
楼上提醒的是啊, 没想到楼主会这样的失误, 上个回复和这题没大关系,

惭愧中, 唉.......

我试了下结果正确,

不过楼主的代码好像不全, 函数声明有木有啊!?

Code:blocks 下GCC:

extern float AddF1(float, float);
// float AddF1(float, float);
AnYidan 2011-12-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bill_zhao610 的回复:]
上面printf函数贴错了,我原来写的就是printf("result=%f,result2 = %f",result,result2);
仍然有错。

我在main.c中和other.c中都写了一个Add求和函数,但是other.c文件中的输出一直不对,请各位帮忙看下。
另外我如果把加法函数把float全部改成int就正常了。

main.c 文件代码:
float AddF2(f……
[/Quote]

请问在 main 函数调用处 可以看到函数原型 float AddF1(float a ,float b);
柯本 2011-12-16
  • 打赏
  • 举报
回复
看你的另一贴

狂且 2011-12-16
  • 打赏
  • 举报
回复
C语言参数传递的时候会将 float 型转换成 double 型.

而 double 一般比 float 型大一倍. 所以当返回 值转换成 float 时就会出错了.

楼主以后还是尽量别用 float 型了, double 比 float 大不了多少, 但精确, 不容易出错啊.

你改改看是不是这个问题?

69,368

社区成员

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

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