我刚读
ISO / IEC 9899:201x委员会草案-2011年4月12日
我在5.1.2.2.3中发现程序终止
..reaching the } that terminates the main function returns a value of 0.
这意味着,如果您未在中指定任何return语句main()
,并且程序成功运行,则main的右括号}将返回0。
但是在下面的代码中,我没有指定任何return语句,但是它没有返回0
#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);
}
编译
gcc test.c
./a.out
sum is 15
echo $?
9 // here it should be 0 but it shows 9 why?
69
+1有耐心阅读规格..
—
Asher
gcc
本身(对于4.6.2版)可以编译非常相似但不完全像C的语言。它可以编译GnuC89-一种基于C89的“宽松”语言。
return
语句中的括号sum()
是不必要的。 int main()
应该是int main(void)
。
混乱!=错字。在我的键盘上,“ 0”和“ o”足够接近,可以轻松地成为后者。;-)
—
The111 2011年
IMHO是一个非常愚蠢的规范,因为它强制编译器通过添加隐式“ return 0”以特殊方式管理“ main”函数。因此,名为“ main”的函数的行为略有不同。编译时检查怎么样(“无返回值”类似)?
—
Giuseppe Guerrini