函数可以不用先定义就直接调用吗?

[复制链接]
查看11 | 回复3 | 2008-12-30 16:45:25 | 显示全部楼层 |阅读模式
#include
main()
{
int i,j,k,l,m,n;
scanf("%d%d%d%d",&i,&j,&k,&l);
printf("%d/%d %d/%d\n",i,j,k,l);
m=mingbs(j,l)/j*i;
n=mingbs(j,l)/l*k;
if(m>n)
printf("%d/%d >%d/%d\n",i,j,k,l);
else if(m<n)
printf("%d/%d <%d/%d\n",i,j,k,l);
else
printf("%d/%d=%d/%d\n",i,j,k,l);
getch();
}
int mingbs(int a,int b)
{
int num1,num2,temp;
num1=a;
num2=b;
if(a<b)
{
temp=a;
a=b;
b=temp;
}
while(b!=0)
{
temp=a%b;
a=b;
b=temp;
}
return(num1*num2/a);
}
函数不是要先定义后才能调用吗?为什么这里却可以直接调用,搞不懂??
不好意识我把概念弄混了,我是说函数可以不用先【声明】就直接调用吗?就像上面的程序,没有在调用前申明函数,却没出现错误,为什么?
四楼大哥,我试过,运行成功的啊!

回复

使用道具 举报

千问 | 2008-12-30 16:45:25 | 显示全部楼层
函数并不需要先定义才能调用。如果在你调用之前已经定义好了函数,当然可以直接调用。如果没有定义好,只要声明一下函数(一般库函数都已经声明好了)就可以用了,定义可以在后面。(甚至可以没有定义,只是没有定义不能完成功能而已,程序编译可以通过)...
回复

使用道具 举报

千问 | 2008-12-30 16:45:25 | 显示全部楼层
这个程序是有问题的,函数在你使用之前是必须得先定义的,否则无法使用该函数,可能你是在那个书上看到的这个程序的一个部分把,这个程序是没有办法正常运行的,这个是肯定的...
回复

使用道具 举报

千问 | 2008-12-30 16:45:25 | 显示全部楼层
编译器应该会给你警告信息的。这是编译器自身做了自动化处理,按照标准的话,这个代码是不对的。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行