Почему main не возвращает здесь 0?

Я только что читал

ISO / IEC 9899: 201x Committee Черновик - 12 апреля 2011 г.

, в котором я обнаружил в разделе 5.1.2.2.3 Завершение программы

..reaching the } that terminates the main function returns a value of 0. 

, это означает, что если вы не укажете какой-либо оператор возврата в main () , и если программа выполняется успешно, то в закрывающей скобке} main вернет 0.

Но в следующем коде я не указываю никаких операторов возврата, но он не возвращает 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);
}

compile

gcc test.c  
./a.out
sum is 15
echo $?
9          // here it should be 0 but it shows 9 why?
116
задан Jeegar Patel 4 January 2012 в 06:10
поделиться