#include <stdio.h>
main(int i)
{
(i=getchar())!=10 && main(i),putchar(i);
return 0;
}
既然来看我的问题了,我来解释下:
main中的int i是形式参数,会把main的()中的变量值拷贝一份,并在main()的函数内部,就是大括号内,以i这个变量形式出现;&&是逻辑运算符:逻辑与;二目运算符,先后判断&&两侧的表达式的返回值;然后做逻辑与运算;所以:(i=getchar())!=10 ,main(i)这两个表达式都会被执行(注意几乎可以说:表达式+冒号=c语言语句,i=getchar()的返回值还是getchar()的到的字符);最后,逗号表达式是顺序求解从左到右的表达式,就是先(i=getchar())!=10 && main(i),然后putchar(i),最后返回putchar(i)的返回值,就是最后一个表达式的返回值,因为这里没有参数接收所以被遗弃。
最后,递归在操作系统中以堆栈(后进先出)的形式被执行,所以最后输入字符被反序。
推荐c语言入门书籍:c programming language (中文名:C程序设计语言_第2版新版),c primer plus (中文版:c primer plus (第五版)中文版) ,很经典的两本,具体可以上网下pdf,pdg版本的,可以去csdn 下免费的呀,哈哈!