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ş:
Neden bu C derleme (non-void işlev bir...
Bir tamsayı değişmezi atmak istiyorum ...
Neden "menşei-Control-Allow-Acces...
Neden sıralanmamış bir dizi daha hızlı...
Neden bu iki kez (1927) garip bir sonu...