注册 登录
编程论坛 C++教室

What does this program mean ?

guoangang 发布于 2007-07-28 20:39, 824 次点击

// 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
这是我从书上找的,但也看不出有什么错。编译可通过,也可运行,但她是什么意思呢?

8 回复
#2
野比2007-07-28 20:43

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

#3
leeco2007-07-28 21:04
你把int c;改成char c;
这是一个将字符串反向输出的程序。
#4
野比2007-07-28 22:41
这个递归在老机器上很容易嗝屁...
#5
guoangang2007-07-29 19:20

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

#6
medicihophy2007-07-29 20:21

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

#7
foreverlh2007-07-30 06:35
运行了一下试试,问题是如何跳出递归???EOF是什么东东?如果作为字符串的话应该不能通过编译才对。、
望各位大人详解。
另外野比同学说的在老机器上很容易嗝屁,分析其原因
是不是因为在递归调用过程中反复执行int c;导致内存过小的机器无法腾出足够的空间来保存现场堆栈和整形空间??
那得多差的机器啊。。在动辄内存上G的今天。。。。
#8
wingyip2007-07-30 18:39
eof 是 end of file
#9
野比2007-08-02 00:10

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


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

1