2012-02-22 99 views
-3

我有一个疑问..这是我的测验中的问题。想知道这个问题的答案。将选择哪个功能?

Question: 

int foo(int); 
double foo(int); 
double foo(double); 

void bar(int value){ 
double score = foo(value); 
} 

哪个函数声明将被选中?或者它不是以上的?

+3

无,它不会编译。 – jv42 2012-02-22 09:16:48

回答

6

C不支持重载(具有相同名称的函数)。

如果这实际上是一个C++问题,那么C++不允许只有返回类型不同的重载(int foo(int)double foo(int))。

+2

+1答案将是'以上都不会编译'。 – jv42 2012-02-22 09:16:33

1

C不支持重载。你不能有多个同名的函数。

你的代码不会编译,因此它的行为方式的问题是未定义的。

这就是为什么,例如,数学库同时提供sin()double作品,并使用单精度float值而不是sinf()

2

这是不可能的,如果任何人能够实现它,那么这将是计算机科学的最大突破。