मैं सिर्फ पढ़ रहा था
आईएसओ / आईईसी 9899: 201x समिति ड्राफ्ट - 12 अप्रैल, 2011
जिसमें मुझे 5.1.2.2.3 कार्यक्रम समाप्ति के तहत मिला
..reaching the } that terminates the main function returns a value of 0.
इसका मतलब यह है कि यदि आप किसी भी रिटर्न स्टेटमेंट को निर्दिष्ट नहीं करते हैं 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);
}
संकलन
gcc test.c
./a.out
sum is 15
echo $?
9 // here it should be 0 but it shows 9 why?
gcc
अपने आप में (संस्करण ४.२.२ के लिए) एक भाषा को बहुत समान रूप से संकलित करता है, लेकिन सी की तरह काफी नहीं है। यह ग्नू - ९ को संकलित करता है - एक भाषा "शिथिल" सी। ९ 4.6 पर आधारित है।
return
कथन पर कोष्ठक sum()
अनावश्यक हैं। int main()
होना चाहिए int main(void)
।