你好世界退出代码

Hello world exit code

我刚刚用 gcc 编译了我的 hello world c 程序,运行 它在 ubuntu 中。因为我 运行 它是通过 emacs,所以我得到了程序的退出代码:13。为什么是 13?我没有指定任何内容,那么为什么它不默认为 0?当我把退出功能放在最后时,我可以改变它,但我想知道这个默认值的意义是什么。

代码:

#include<stdio.h>

int main()
{
    printf("Hello, world!");
}

从 C99 开始,在没有 return 的情况下到达 main 的末尾与将 return 归零相同(仅 main,并非全部功能一般)。在 C99 之前(我相信 gcc 默认为 C89/90 作为基准),它没有定义会发生什么,所以如果你需要的话,你应该明确地 return 为零。

或者您可以通过使用 -std=c99c11 编译来采用 C99/C11。

就为什么 13 而言,它既不相关也不便携,但 return 代码很可能是 eax 寄存器中的任何内容(或者如果您使用不同的调用约定或体系结构,则等效代码).对于 x86,这可能仍然是 return 从 printf 编辑的值,return 是打印的字符数。

您可以使用 void main() 而不是 int main(),这样您就不必提供任何 return 类型,但是如果您使用 int main,则必须提供 return 语句