Code Bye

关于C语言函数

#include <stdio.h>
int main(void)
{
   sayHi();
}
void sayHi()
{
   printf("hello world");
}

以上代码无法编译通过,把sayHi()函数放在main函数之前就可以了,但是假如sayHi()函数是个有返回值的,就可以编译通过,这是为什么?为什么有返回值的就可以不用放在main函数之前呢?
下面这段有返回值的就可以编译通过 成功运行

#include <stdio.h>
int main(void)
{
   printf("%d\n",sayHi());
}
int sayHi()
{
   return  1;
}
解决方案

20

引用:
Quote: 引用:

c语言的规定,原因是系统默认的返回值类型是int型,这是规定好了的

为什么有整型返回值的 可以不用定义在main函数之前,而无返回值的要么在调用前声明要么定义在调用前。

C语言
调用没有声明过的函数,会默认声明一个返回类型为 int 的函数。
然后看到了函数的定义,假如这个定义的函数类型与前面默认声明的不一致,就会出错。在C语言中,同名的函数只能有一个。对这个函数的多次声明/定义中,其类型必须一致。
后面那个将函数定义为返回int ,定义与默认声明是一致的。
===========
建议,即使在 C 语言中,每一个需要被调用的函数都要提前声明一下。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于C语言函数