C++明明有函数声明,为什么不起作用?

vivi爱学习 2009-04-13 03:50:28
调试程序的时候,在main函数之前,添加了函数声明,但是函数的定义我写到了main函数之后,但是编译的的时候函数声明是失效的,还得把函数的定义体放到main之前,这是怎么回事啊~高人指点。
#include <iostream>

using namespace std;
int func(int a);
int func(int a){
if(a==0)
return 0;
if(a==1)
return 1;
if(a>1)
return (func(a-1)+ func(a-2));
}
int main()
{
int n,result;
cout<<"Please enter a number to calculate: "<<endl;
cin>>n;
result=func(n);
cout<<"The result is"<<result<<endl;
cin>>n;
}
...全文
643 47 打赏 收藏 转发到动态 举报
写回复
用AI写文章
47 条回复
切换为时间正序
请发表友善的回复…
发表回复
nickyfantastic 2009-04-22
  • 打赏
  • 举报
回复
可以运行,VC6
tuzi0203 2009-04-22
  • 打赏
  • 举报
回复
要是vc6.0的话,干脆这样写
#include <iostream>

using namespace std;
int func(int a){
if(a==0)
return 0;
if(a==1)
return 1;
if(a>1)
return (func(a-1)+ func(a-2));
}
int main()
{
int n,result;
cout < <"Please enter a number to calculate: " < <endl;
cin>>n;
result=func(n);
cout < <"The result is" < <result < <endl;
cin>>n;
}
vivi爱学习 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用 45 楼 Jinhao 的回复:]
不是说编译错误,而是整个编译不能通过的代码。


C/C++ code
cout <<"Please enter a number to calculate: " <<endl;

<<的中间,不能有空格。
[/Quote]
丢死人了我,thank you la~
Jinhao 2009-04-22
  • 打赏
  • 举报
回复
不是说编译错误,而是整个编译不能通过的代码。


cout <<"Please enter a number to calculate: " <<endl;

<<的中间,不能有空格。

vivi爱学习 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用 43 楼 Jinhao 的回复:]
引用 34 楼 sunriseforever 的回复:
引用 26 楼 freeskyo 的回复:
应该不会有这种问题,和编译器有关吗?

我用的就是dev啊~神奇死了


写的是int main,说明main有返回值, lz的代码没有错,可以不用在main函数里显式地写return 0;
如果不写return语句,则main函数始终保持return 0;的效果,编译器会自动帮你补上。

lz,你把出错的代码写出来。
[/Quote]

这句错了
cout < <"Please enter a number to calculate: " < <endl;
然后报错的提示是
D:\devC++\WY_DEVCPP_5B0807\DEV-CPP\斐波那契.cpp In function `int main()':
17 D:\devC++\WY_DEVCPP_5B0807\DEV-CPP\斐波那契.cpp expected primary-expression before '<' token
17 D:\devC++\WY_DEVCPP_5B0807\DEV-CPP\斐波那契.cpp expected primary-expression before '<' token
20 D:\devC++\WY_DEVCPP_5B0807\DEV-CPP\斐波那契.cpp expected primary-expression before '<' token
20 D:\devC++\WY_DEVCPP_5B0807\DEV-CPP\斐波那契.cpp expected primary-expression before '<' token
20 D:\devC++\WY_DEVCPP_5B0807\DEV-CPP\斐波那契.cpp expected primary-expression before '<' token

俺是初学者,也看不大懂,大家看看吧


Jinhao 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 sunriseforever 的回复:]
引用 26 楼 freeskyo 的回复:
应该不会有这种问题,和编译器有关吗?

我用的就是dev啊~神奇死了
[/Quote]

写的是int main,说明main有返回值, lz的代码没有错,可以不用在main函数里显式地写return 0;
如果不写return语句,则main函数始终保持return 0;的效果,编译器会自动帮你补上。

lz,你把出错的代码写出来。
rlink 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 sunriseforever 的帖子:]
调试程序的时候,在main函数之前,添加了函数声明,但是函数的定义我写到了main函数之后,但是编译的的时候函数声明是失效的,还得把函数的定义体放到main之前,这是怎么回事啊~高人指点。
#include <iostream>

using namespace std;
int func(int a);
int func(int a){
if(a==0)
return 0;
if(a==1)
return 1;
if(a>1)
return (func(a-1)+ func(a-2));
}
int main()
{
int n,result;
cout < <"Please enter a number to calculate: " < <endl;
cin>>n;
result=func(n);
cout < <"The result is" < <result < <endl;
cin>>n;
}

[/Quote]

LZ 注意你的 int mian(); 函数执行到最后都没有返回值,你把int func(int a);放在后面肯定编译不过,也不知道你用的是什么编译器,没有返回值居然不会报错?~!~汗。
JaneThink 2009-04-22
  • 打赏
  • 举报
回复
应该不是这个声明的问题,可能是其他的问题吧
qzl123666 2009-04-22
  • 打赏
  • 举报
回复
楼主肯定是什么地方弄错了
lu188887 2009-04-22
  • 打赏
  • 举报
回复
确实是在调用前声明就可以了~~
amossavez 2009-04-22
  • 打赏
  • 举报
回复
没有返回值也是能通过的,最多给你一个警告!
heyongzhou 2009-04-21
  • 打赏
  • 举报
回复
群众纷纷表示编译通过。
k1988 2009-04-21
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 jackyjkchen 的回复:]
main函数连返回值都没有,楼上几位怎么编译通过的!
[/Quote]

就是就是,都是神人。
vivi爱学习 2009-04-21
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 freeskyo 的回复:]
应该不会有这种问题,和编译器有关吗?
[/Quote]
我用的就是dev啊~神奇死了
vivi爱学习 2009-04-21
  • 打赏
  • 举报
回复
我用的也是dev啊~神奇死了
vivi爱学习 2009-04-21
  • 打赏
  • 举报
回复
dev-C++
honglei8485 2009-04-18
  • 打赏
  • 举报
回复
UP
jackyjkchen 2009-04-18
  • 打赏
  • 举报
回复
main函数连返回值都没有,楼上几位怎么编译通过的!
qiance 2009-04-18
  • 打赏
  • 举报
回复
不应该
zhaohongbo83 2009-04-17
  • 打赏
  • 举报
回复
不可能有这样的问题吧!
要么你在main()前直接定义就可以了,不用声明
要么你先声明,然后再main()后定义函数,都不会有错误的!
加载更多回复(27)

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧