你好世界退出代码

时间:2015-05-17 04:00:31

标签: exit-code

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

代码:

#include<stdio.h>

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

2 个答案:

答案 0 :(得分:5)

从C99开始,在没有返回的情况下到达main的末尾与返回零(仅main,而不是一般的所有函数)相同。在C99之前(我相信gcc默认为C89 / 90作为基线),没有定义会发生什么,所以如果你需要的话,你应该明确地返回零。

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

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

答案 1 :(得分:-3)

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