急~~~~C语言问题:为什么把函数写在主函数后面,但没在主函数内声明,却没有报错?

程序如下:#include<stdio.h>voidmain(){inti;for(i=100;i<=200;i++)if(sushu(i))printf("%4d",i... 程序如下:
#include<stdio.h>
void main()
{int i;
for(i=100;i<=200;i++)
if(sushu(i))printf("%4d",i);
}
sushu(int n)
{
int val,k;
for(val=2;val<n;val++)
if(n%val==0){k=0;break;}
else k=1;
return k;
}
展开
 我来答
纸不屑
2012-05-08
知道答主
回答量:22
采纳率:0%
帮助的人:26.4万
展开全部
这里涉及到一个路径的问题。我们编写好的程序main函数是入口,当编译器变异的时候会根据里面调用到的其他函数去寻找加载进来一起编译(非main函数如果不被main函数调用其实根本上就没用,这里指的是不被main函数调用和main函数调用过的函数调用),假如是include进来的编译器就知道去库函数里面加载那一个函数,而没有include进来的就会在本目录下检索,假如检索不到就编译出错。库函数所在就相当于老地方,而main函数所在的地方就相当于本地,这两个都是被编译器熟知的。
其实除了c语言,java也会这样,不在同一个包内的类需要导入,在同一个包里面的类不需要导入(import),在同一个java文件里面的类(内部类或者类外面定义的类都一样)也不需要导入。因为编译器知道在这两个地方找,去类库找就需要指定哪一个。
TableDI
2024-07-18 广告
VLOOKUP函数是Excel中用于数据匹配的重要工具。其使用方法是:在个参数中输入要查找的值,第二个参数是包含数据的范围或表格,第三个参数指定返回数据的列号,第四个参数(可选)决定查找方式(0为精确匹配,其他为近似匹配)。例如,假设我们想... 点击进入详情页
本回答由TableDI提供
随意的风k
2012-05-08 · TA获得超过209个赞
知道小有建树答主
回答量:222
采纳率:0%
帮助的人:138万
展开全部
在c语言中,如果定义函数时选择默认返回类型(即int类型),则这个函数放在任意位置都是可以被别的程序调用的,而且编译无误~ 但是这是一个很大的陷阱。你会发现当你给那个函数任意个参数时,编译也能通过,还能执行,但是很可能产生错误。
楼主如果你试试 在main里 这么写 看看结果
1、 sudu(4,i,100,4,5,6)
2、sudu(i)
3、sudu(4)
你可以参考c语言函数声明的陷阱~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fhtsnb
2012-05-08
知道答主
回答量:12
采纳率:0%
帮助的人:15.2万
展开全部
这里是个 隐式声明 问题
C语言的编译器 在没有发现函数原型的 时候 会 自动产生一个 隐式的函数声明
这个隐式的函数声明 的返回值 是int
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xuzhouliuying
高粉答主

推荐于2017-10-24 · 繁杂信息太多,你要学会辨别
知道顶级答主
回答量:5.4万
采纳率:86%
帮助的人:2.4亿
展开全部
应该是你编程软件的问题。只要软件没问题,前面没有任何定义,肯定会提示sushu(i)未定义的。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
makelihua
2012-05-08 · 超过16用户采纳过TA的回答
知道答主
回答量:84
采纳率:0%
帮助的人:37.2万
展开全部
被调函数写在主函数后面是被允许的,但是在主函数内部进行声明,声明方法具体是
void main()
{ 类型说明 sushu(int n);
....}
就是跟定义一个函数一样的
追问
我知道,但为什么我没声明,结果却是对的?
追答
这是系统默认的写作模式,如果正确的话可能软件的主函数跟被调函数在一个模块上,主函数能搜索到,我也不太清楚,我晚上回去搜索下, 有答案再告诉你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式