SORU
30 Aralık 2011, Cuma


Neden ana 0 burada döndürmez?

Sadece okuyordum

ISO/9899:201x Komitesi Taslak IEC — 12 Nisan 2011

hangi 5.1.2.2.3 Program sonlanması altında buldum

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

main(), herhangi bir return ifadesi belirtmeniz yok eğer yok demektir ve eğer program başarılı bir şekilde çalışıyorsa, o zaman kapanış ayracı } ana 0 döndürür.

Ama aşağıdaki kodu herhangi bir return deyimi belirtmek istemiyorum, henüz 0 döndürmez

#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);
}

derleme

gcc test.c  
./a.out
sum is 15
echo $?
9          // here it should be 0 but it shows 9 why?

CEVAP
30 Aralık 2011, Cuma


Bu kuralı C standardının 1999 sürümünde eklendi. C90, durum döndürdü içinde tanımlanmamış.

-std=c99 gcc geçerek etkinleştirebilirsiniz.

Bir yan not olarak, ilginç bir şekilde 9 sadece 9 karakter yazdığı printf dönüşü yok çünkü geri döndü.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Julian Smith

    Julian Smith

    31 EKİM 2006
  • Kassem G

    Kassem G

    25 EKİM 2006
  • Drakinen

    Drakinen

    1 EYLÜL 2008