#include <stdio.h>
int main() {
int c = c;
printf("c is %i\n", c);
return 0;
}
मैं c
नामक एक पूर्णांक चर परिभाषित कर रहा हूं, और मैं अपने मूल्य को स्वयं ही निर्दिष्ट कर रहा हूं। लेकिन यह कैसे संकलित कर सकते हैं? c
प्रारंभ नहीं किया गया है, तो इसका मूल्य स्वयं को कैसे सौंपा जा सकता है? जब मैं प्रोग्राम चलाता हूं, तो मुझे c is 0
मिलता है।यह सी कोड संकलित क्यों करता है?
मुझे लगता है कि संकलक असेंबली कोड उत्पन्न कर रहा है जो c
चर के लिए स्थान आवंटित कर रहा है (जब संकलक int c
कथन का सामना करता है)। फिर यह अन-प्रारंभिक स्थान में जो भी जंक वैल्यू लेता है और इसे c
पर वापस सौंपता है। क्या यह हो रहा है?
दुर्भाग्यवश, इसकी अनुमति है - आप आम तौर पर संकलक को इसके बारे में एक चेतावनी उत्सर्जित कर सकते हैं, उदाहरण के लिए -Wall ध्वज का उपयोग करके g ++ (लेकिन किसी कारण से जीसीसी नहीं) का उपयोग करके चेतावनी उत्पन्न होती है। –
@Neil, जीसीसी के साथ एक त्रुटि को मजबूर करने के लिए, आप '-Werror = uninitialized -Winit-self' –