C函数重载

BackupLiu3 2012-04-15 08:48:54
有两个函数
f(int a);
f(float a);


这样调用f(1)则调用第一个函数
如果这样f(1.0)则出现错误无法编译


跪求高手解答 谢谢!
...全文
185 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamnobody 2012-04-16
  • 打赏
  • 举报
回复


因为 1.0 的类型是 double
double 转成foat 和 double 转成 int

是同级的转换的,所以不能重载.

详见 c++ primer(第三版) 的 函数重载.
lv752078095 2012-04-16
  • 打赏
  • 举报
回复
上面说的已经很清楚了,c不能重载,那是c++特有的
BackupLiu3 2012-04-16
  • 打赏
  • 举报
回复
谢谢!
鱼珊珊 2012-04-16
  • 打赏
  • 举报
回复
c 也支持函数重载。
#include<stdio.h>
int fun(int a)
{
printf("HHHHHHH");
return 0;

}
int fun(double a)
{
printf("UUUUUUU");
return 0;
}
int main()
{
fun(1);
fun(1.0f);
return 0;
}
数据格式要完全正确
goldbeef 2012-04-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

在参数类型能够隐式转换的情况下,编译器不能确定调用哪个函数,由此,会产生错误。

在C++中,要想调用后者,可以
f( 1.0f );
或者
f((float)1.0);
[/Quote]顶,C语言只能用不同的名字,比如
f_int(int a);
f_float(float a);
pathuang68 2012-04-16
  • 打赏
  • 举报
回复
在参数类型能够隐式转换的情况下,编译器不能确定调用哪个函数,由此,会产生错误。

在C++中,要想调用后者,可以
f( 1.0f );
或者
f((float)1.0);
飞天御剑流 2012-04-15
  • 打赏
  • 举报
回复
在c++中得这样调用:f( 1.0f );
BackupLiu3 2012-04-15
  • 打赏
  • 举报
回复
那如果是C++呢?
第二个重载函数怎么调用
风吹PP凉SS 2012-04-15
  • 打赏
  • 举报
回复
3楼正解
muyi66 2012-04-15
  • 打赏
  • 举报
回复
他说得很详细了......函数重载是C++的功能,C没有这个功能
BackupLiu3 2012-04-15
  • 打赏
  • 举报
回复
能详细点吗?
AnYidan 2012-04-15
  • 打赏
  • 举报
回复
c 不支持重载,换名字

69,369

社区成员

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

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