我读到C语言中的每个函数都应该有一个原型,而且如果一个函数接受参数或返回值,则在原型和定义中都应提及它们的数据类型。但是,我最近尝试了一段代码,其中涉及到对用户定义函数的调用,这不满足上述要求。尽管结果不正确,但是该程序没有引发任何错误。谁能提供解释?
我尝试的代码如下:
#include<stdio.h>
int main(){
printf("%f",sum(3.2, 5.6));
return 0;
}
sum(a, b){
return a+b;
}
代码编译并成功运行,输出为0.000000。该过程以退出代码0退出。我在各种在线编译器上运行了该代码。
答案 0 :(得分:2)
如果您未指定返回类型或参数类型,则C会将其隐式声明为int。
这是较早版本的C(C89和C90)的“功能”,但如今通常被认为是不好的做法。 C99标准(1999)不再允许这样做。
谈到为什么要打印0.0000的原因,是因为该函数返回一个int,它需要类型说明符%d,但是您正在使用%f,它是double的类型说明符。请参阅此stackoverflow帖子以获取进一步的说明 printing int using %f format specifier