Exit code 你好,世界出口代码

Exit code 你好,世界出口代码,exit-code,Exit Code,我刚刚用gcc编译了hello world c程序,并在ubuntu中运行了它。因为我通过emacs运行它,所以我得到了程序的退出代码:13。为什么是13岁?我没有指定任何内容,为什么它没有默认为0?当我在末尾放一个退出函数时,我可以修改它,但是我想知道这个默认值的意义是什么 代码: #包括 int main() { printf(“你好,世界!”); } 从C99开始,到达main末尾而不返回与返回零相同(仅main,通常不是所有函数)。在C99之前(我相信,gcc默认将C89/90作为基线)

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

代码:

#包括
int main()
{
printf(“你好,世界!”);
}

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

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


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

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

您的函数声明说它将返回
int
,但您没有
return
语句。因此,它返回的是随机的。如果您希望它在没有错误时返回零,则返回零。在C语言定义中,您在哪里看到不返回值的函数的默认返回值将为零?您需要包括
return0
main
的末尾。另外,
main
应该声明为
intmain(intargc,char**argv)
@reirab:不,这都不正确。为什么是13
printf()
返回打印的字符数。“你好,世界!”有13个字符长。因此,我猜想如果没有显式的
返回值
退出()
main()
将返回最后一个表达式的值。@JimLewis考虑到编译器经常将返回值放在注册表中,这是有道理的。由于您没有使用
return
语句(或任何其他语句)显式更改该reg的值,因此它仍然具有上一条return语句设置的值。-1“您可以使用void main()”是不正确的。“您必须提供返回声明”不正确。
#include<stdio.h>

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