C return 语句

这个语句真是烦人

int a(){

return 3;

}

int b(){

 

}

int main(){

printf("%d",b());

return 0;

}

 结果是得到1

如果将b函数改成int b(){a();}

那么结果将得到3,

如果是java则不会出现中问题。C实在是太接近底层了,主要的原因就是eax的赋值情况发生了改变,当使用return是就是将数值压入eax的数值中,然后返回主函数中。当时当递归回来的时候就还将eax的数值改变,所以写递归的时候不要希望把最终的结果return回来,这是错误的,应为回家的路有太多不确定的因素,所以正确的做法就是在相应的层,做相应的事,最用将所有的结果遍历。

当然也有非常完美的递归方法像阶乘,但是这个是个特例,不足以解决大部分的情况

posted @ 2012-09-18 09:22  Epirus  阅读(204)  评论(0编辑  收藏  举报