【发布时间】:2017-12-07 22:56:20
【问题描述】:
我是编程领域的新手,当我在 C 中编写函数时,我开始知道函数有三个最重要的部分,即-
- 函数声明或函数原型
- 函数调用
- 函数定义
但是,当我解决一个数字的阶乘问题时,我在代码中了解到,当我在 main() 上面的代码中不包括函数声明或函数协议时,代码仍然在运行并给出输出为 120。所以我的问题是为什么函数声明或函数原型不会影响我的程序的输出,或者没有必要在 main() 之上包含函数声明或原型。
-------Code-----
#include<stdio.h>
#include<conio.h>
// int fact(int);
main()
{
int x;
x=fact(5);
printf("The factorial is =%d",x);
}
int fact(int n)
{
int f=1,i;
for(I=1;i<=n;i++)
f=f*I;
return (f);
}
【问题讨论】:
-
回答标题问题,如果函数不返回
int并且您仍在使用以前不需要显式声明函数的古老 (C90) C 的编译模式它们被使用,然后滥用返回double或指针的函数,例如,没有声明会产生问题。旧 C (C99) 和现代 C (C11) 都要求在使用函数之前声明它们。在调用它们之前,您应该确保在范围内有一个函数原型。您的main()在 C99 或 C11 中无效;返回类型int是必需的。 -
另外,不要把return语句当作函数。删除那些括号。
标签: c