>>97
途中でリターンというのは、途中で一つの出口へのgotoと同じ事なのだよ。

int foo(void) {
 int ret;
 if(A) {ret=1; return ret;}
 if(B) {ret=2; return ret;}
 if(C) {ret=3; return ret;}
 ret=0;

 return ret;
}
   ↓
int foo(void) {
 int ret;
 if(A) {ret=1; goto end;}
 if(B) {ret=2; goto end;}
 if(C) {ret=3; goto end;}
 ret=0;

end:
 return ret;
}

関数の終わりの}の直前に飛んでいるだけなのさ。だから途中でreturnも出口は一つ。