你好世界退出代码
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=c99
或 c11
编译来采用 C99/C11。
就为什么 13 而言,它既不相关也不便携,但 return 代码很可能是 eax 寄存器中的任何内容(或者如果您使用不同的调用约定或体系结构,则等效代码).对于 x86,这可能仍然是 return 从 printf
编辑的值,return 是打印的字符数。
您可以使用 void main() 而不是 int main(),这样您就不必提供任何 return 类型,但是如果您使用 int main,则必须提供 return 语句
我刚刚用 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=c99
或 c11
编译来采用 C99/C11。
就为什么 13 而言,它既不相关也不便携,但 return 代码很可能是 eax 寄存器中的任何内容(或者如果您使用不同的调用约定或体系结构,则等效代码).对于 x86,这可能仍然是 return 从 printf
编辑的值,return 是打印的字符数。
您可以使用 void main() 而不是 int main(),这样您就不必提供任何 return 类型,但是如果您使用 int main,则必须提供 return 语句