我在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循环?
答案 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)。