我刚用gcc编译了我的hello world c程序并在ubuntu中运行它.因为我通过emacs运行它,我得到了程序的退出代码:13.为什么13?我没有指定任何东西,为什么它没有默认为0?当我在最后放置一个退出函数时,我可以改变它,但我想知道这个默认值的重要性是什么.
码:
#include<stdio.h>
int main()
{
printf("Hello, world!");
}
Run Code Online (Sandbox Code Playgroud)
从C99开始,到达main没有返回的结束就像你返回零一样(只是main,不是一般的所有函数).在C99之前(我相信gcc默认为C89/90作为基线),它没有被定义会发生什么,所以你应该明确地返回零,如果这是你需要的.
或者您可以通过编译-std=c99或c11一个来采用C99/C11 .
就13的原因而言,它既不相关也不可移植,但返回代码很可能是在eax寄存器中发生的任何事情(或者如果你使用不同的调用约定或体系结构则相同).对于x86,这可能仍然是返回的值printf,它返回打印的字符数.
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |