标题:What does this program mean ?
只看楼主
guoangang
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-7-11
 问题点数:0 回复次数:8 
What does this program mean ?

// What is wrong with this program?
#include <iostream>

using std::cin;
using std::cout;

int main()
{
int c;

if ( ( c = cin.get() ) != EOF ) {
main();
cout << c;
}

return 0; // indicates successful termination

} // end main
这是我从书上找的,但也看不出有什么错。编译可通过,也可运行,但她是什么意思呢?

搜索更多相关主题的帖子: does mean What program 
2007-07-28 20:39
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
得分:0 

相当于
while(c=cin.get()!=EOF){
cout<<c;
}...


女侠,约吗?
2007-07-28 20:43
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1026
专家分:177
注 册:2007-5-10
得分:0 
你把int c;改成char c;
这是一个将字符串反向输出的程序。
2007-07-28 21:04
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
得分:0 
这个递归在老机器上很容易嗝屁...

女侠,约吗?
2007-07-28 22:41
guoangang
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-7-11
得分:0 

她怎么可以调用main函数呢?
我有些不理解。


2007-07-29 19:20
medicihophy
Rank: 1
等 级:新手上路
威 望:1
帖 子:102
专家分:0
注 册:2007-7-28
得分:0 

main也是个函数啊,怎么不能递归呢?自己调用自己就叫递归嘛!


2007-07-29 20:21
foreverlh
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-4-29
得分:0 
运行了一下试试,问题是如何跳出递归???EOF是什么东东?如果作为字符串的话应该不能通过编译才对。、
望各位大人详解。
另外野比同学说的在老机器上很容易嗝屁,分析其原因
是不是因为在递归调用过程中反复执行int c;导致内存过小的机器无法腾出足够的空间来保存现场堆栈和整形空间??
那得多差的机器啊。。在动辄内存上G的今天。。。。

2007-07-30 06:35
wingyip
Rank: 1
等 级:新手上路
威 望:2
帖 子:119
专家分:0
注 册:2007-7-16
得分:0 
eof 是 end of file

2007-07-30 18:39
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
得分:0 

eof就是ctrl+Z或ctrl+D(输入时)
或文件結尾(文件中)


不仅因为int.. 还有每次调用main时都要把&main(FAR PTR)压到堆栈里..(4或8字节)..所以容易挂..(如果从文件输入)..


女侠,约吗?
2007-08-02 00:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-158826-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023210 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved