为什么main在这里不返回0?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

但在下面的代码中,我没有指定任何返回语句,但它不返回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?
提问于
用户回答回答于

该规则在1999版C标准中增加了。在C90中,返回的状态是未定义的。

可以通过将-std = c99传递给gcc来启用

作为一个侧面说明,有趣的是返回9,因为写入9个字符的printf的返回值。

用户回答回答于

它返回printf的返回值,它是真正打印出来的字符数。

扫码关注云+社区