为什么C中的main()函数可以正确终止,即使不使用exit或return?
例如:
#include<stdio.h>
int sum(int a,int b)
{
return (a + b);
}
int main()
{
int a=10;
int b=5;
int ans;
ans=sum(a,b);
printf("sum is %d",ans);
}
Run Code Online (Sandbox Code Playgroud)
Fin*_*fin 11
因为编译器exit为您添加了隐含的内容.
检查一下nightcracker的原因; 我强烈建议您使用有意义的返回代码进行显式退出/返回.
C99标准:
如果main函数的返回类型是与int兼容的类型,则从初始调用到main函数的返回等同于调用exit函数,其中main函数返回的值作为其参数; 10)到达}终止main函数返回值0.如果返回类型与int不兼容,则返回到主机环境的终止状态未指定.
我正在寻找要检查的C89文本.
orl*_*rlp 11
这是因为C99和C11标准如此说:
5.1.2.2.3程序终止
到达该
}终止main函数将返回值0.如果返回类型不兼容int,则返回到主机环境的终止状态未指定.
但是,您应该添加一个return语句.这是因为在C89中返回的值是未定义的,否则!
3.6.6.4退货声明
到达
}那个终止函数等同于执行没有表达式的return语句.2.1.2.2托管环境
如果main函数执行不指定值的返回,则返回到主机环境的终止状态是未定义的.