这个程序,当我输入123456回车之后,为什么会倒序输出654321
进入try,输入一个字符串123456,然后getchar取1赋值给c,再次执行try,取2赋值给c,依次向下,当取到回车的时候if不成立,执行putchar,这个时候c应该是等于6的才对呀,为什么c会变成654321
这个是递归的问题,从你的实现逻辑来看,如果当前不是换行就继续递归处理下一个字符。最后碰到换行字符,就依次地退出,出现654321的输出了。
try()函数是一个递归,取到回车后,首先putchar打印6,try()函数会返回上一层调用打印5,接着依次打印4321
看清楚,你的putchar也执行了6次
try()函数里在putchar()之前以调用了try(),这就是递归调用,根据函数栈后进选出的原理,6是最后的,先输出
try()是递归函数