VC++定义函数问题

来源:百度知道 编辑:UC知道 时间:2024/09/28 06:49:04
大家好,我在看金文的2级C等级考试教程,里面用TC教学
我现在用的是VC

教程里说定义一个函数,除了返回值类型为int或者char的除外,其他的类型的函数一定要放在调用函数之前。
恩,我现在写了个:
#include "stdio.h"
main()
{int a;
scanf("%d",&a);
if(isprime(a))
printf("Yes\n");
else
printf("no\n");
}

int isprime(int x)
{int i;
for(i=2;i<=x;i++)
{
if(x%i==0)break;
}
if(i>=x)
return 1;
else
return 0;
}
输入一个数,判断是否是素数。
因为是int类型,视频里说可以放在调用函数之后,所以我把他放在main()后面去了,而且在TC里编译通过了。
但在VC里却不行?为什么??
谢谢·~

没有什么为什么的问题,不同编译器规则不同而已。vc是针对c++的,一些c中不太规范的表示在vc中是要报错的。你说的这个问题,可以把函数的定义放在主函数之前,或者在主函数之前声明,后面定义。另外,主函数也需指定类型,不需返回值则加void,因为c++不支持默认的函数返回类型。

TC2.0是1988年的,VC6是1998年的,十年啊……

我给你简单说下任何编译器都不会报错的程序结构,注意,这只是建议,但如果你遵循的话,你肯定不会遇上麻烦(至少我没遇上)。

将main()中用到的所有函数,在main()之前进行声明,main()之后进行实现。不管返回类型是什么,都是如此。保证不会有任何编译器找你麻烦。

在你的示例代码中,就是在main()之前,与include指令之后,插入这么一句:
int isprime(int x); // x 可有可无
就可以通过任何编译器的检查。

我用VC++ 6.0编译通过并正确运行。不过编译完之后提示一个警告,说isprime没有定义。

一般函数和变量在使用之前是要定义的,这个是一个好习惯,即使编译通过也应该遵循。

你要前向声明函数呀

建议看看visual c++编程规范 这样你就能明白了

在早期的vc里面如果函数没有返回值时 是默认为int
但是后来标准修改好后就不再支持这个功能了

看不出来程序有什么问题啊~