楼主,你这个函数编译时候要有警告的,会警告函数实际没有返回值。。
int fn2()
{
  fn();
  if( 0 ) return 200;
}而且,因为编译优化。。它实际完全等于。。
int fn2()
{
  fn();
}返回值常在EAX寄存器中,因为你这函数它没有实际RETURN 值,所以它是什么值都不奇怪的。