函数中有两个return语句,哪个return语句将执行?

时间:2018-06-25 13:02:54

标签: c return

int main()
{  
   int f=fun();
   ...
}
int fun()
{
   return 1;
   return 2;
}

在上面的程序中,当从主函数调用一个函数并且该函数包含两个return语句时,

  1. 两个return语句都将执行吗?否则
  2. 如果仅执行一个return语句,为什么?那么另一个return语句是否执行呢?

2 个答案:

答案 0 :(得分:6)

程序控制从不到达return 2;,优化的编译器将其删除。

我所知道的唯一一种疯狂的语言足以使两个return语句到达Java:

try {
    return 1; // this is evaluated
} finally {
    return 2; // this is the one actually returned
}

答案 1 :(得分:0)

如果您确信 return 语句与诸如 RTS 的程序集操作码(“从子例程返回”)相对应,则该程序操作码使用调用之后的指令地址,显然第二条return语句永远不会执行。