Knocker说的可能是c99不再支持隐含式的int规则,之前的标准是如果函数没有写返回值则默认返回int,C99中非void类型函数必须使用带返回值的return语句.
雨中飞燕 的第二节讨论函数返回值的第一个程序有个
factorial(int n), 这在c99以前的标准中编译器会解释为
int factorial(int n)。 你的例子是输入0测试,不过这个程序在输入0的时候没有返回语句,于是返回值没有直接设置,具体的返回值是不确定的,pc的汇编我还没有学,在单片机中被调用函数把返回值写入通用寄存器中,返回后调用它的函数读寄存器获取返回值,这个例子是没有return执行所以带返回值的寄存器没有设置,其值是之前最后一个使用过该积存器的指令决定的。