在Java中,System.exit(0)以下代码有或没有区别?
public class TestExit
{
public static void main(String[] args)
{
System.out.println("hello world");
System.exit(0); // is it necessary? And when it must be called?
}
}
Run Code Online (Sandbox Code Playgroud)
该文件说:"这种方法永远不会正常返回." 这是什么意思?
我有一些C程序没有从main返回任何显式,如下所示:
int main(int argc, char *argv[])
{
// blah blah
}
Run Code Online (Sandbox Code Playgroud)
如果我使用GCC 4.6.3和以下选项编译它们:
gcc file.c -Wall -Wextra
Run Code Online (Sandbox Code Playgroud)
程序不返回0并给我带来问题,但标准(以及SO上的许多其他答案)说:
如果main函数的返回类型是与int兼容的类型,则从初始调用返回main函数等同于调用exit函数,并将main函数返回的值作为其参数; [10] 到达}终止main函数返回值0.如果返回类型与int不兼容,则未指定返回到主机环境的终止状态.
[10]根据6.2.4,在主要情况下声明的具有自动存储持续时间的物体的寿命将在前一种情况下结束,即使它们在后者中没有.
我的程序返回不同的值,160,15,14 ...垃圾?
我错过了什么吗?这是GCC的错误吗?在GCC在线文档中找不到任何内容.GCC是否仍然指的是一些旧的C标准(前C99),这可能没有指定?