返回0退出程序或退出循环?

时间:2014-10-14 13:49:45

标签: c return

我在C中有一个关于return 0的问题:

void main()
{
    int i = 0;
    while(1)
    {
        switch(i)
        {
            case 1:
            case 2:
            case 3:
            case 4:
                i ++;
                break;
            case 5:
                return 0;
        }   
    }
}

返回0将退出整个程序,还是只会退出while循环?

6 个答案:

答案 0 :(得分:2)

它将从main方法返回,在这种情况下,将退出整个程序。

答案 1 :(得分:1)

在您的示例中,它将退出将结束程序的main()函数。通常,return语句将通过将控制流返回给方法调用者来终止循环(通常break结束循环);如果main()是操作系统。

答案 2 :(得分:1)

在您的情况下,由于return 0位于main,程序将退出。 return将终止函数的执行并将控制权返回给调用函数。当它放在main中时,它将退出程序。要让main返回int,请使用int main代替void main。同样在C99及以上版本中,您无法使用void main

答案 3 :(得分:0)

来自C-Standard 6.8.6.4/2

  

return 语句终止当前函数的执行并将控制权返回给   它的来电者。

在OP的代码中,“当前函数”是main()将控制权返回给它的调用者”意味着程序的结束。

答案 4 :(得分:0)

  

return语句导致执行离开当前子例程   并在紧接着之后的代码中恢复   调用子程序,称为返回地址。

在你的程序中main()是子程序,而main()是程序在C中开始执行,因此main()的退出也将是程序的退出。

int getvalue()
{
    return 10;           //exit subroutine getvalue()
}

int main()
{
    printf("Value : %d\n",getvalue());   // get the return value from getvalue() and continue next
    printf("Next step after return\n");   
    return 0;                         // exit the main() subroutine
}

输出:

value : 10    
Next step after return

此处程序将从10打印返回值 getvalue() ,并打印 "Next step after return" ,然后打印{{1将导致return 0子程序的exit即程序。

答案 5 :(得分:0)

有三种基本的"流量控制" C中的陈述:

  • return始终保留当前执行的函数(可选择返回值)
  • break离开当前执行的循环
  • continue会跳过当前循环中的所有剩余语句,并继续下一次迭代

在你的情况下,return 0将终止当前函数main(),从而退出整个程序(shell将看到结果代码0)。