#include <iostream>
int main(){
std::cout << main << std::endl;
return 0;
}
यह कमांड लाइन में 1 प्रिंट क्यों करता है?क्यों std :: cout << main << std :: endl prints 1?
#include <iostream>
int main(){
std::cout << main << std::endl;
return 0;
}
यह कमांड लाइन में 1 प्रिंट क्यों करता है?क्यों std :: cout << main << std :: endl prints 1?
आपका कार्यक्रम खराब है। N4140:
§3.6.1/3 फ़ंक्शन
main
किसी प्रोग्राम के भीतर उपयोग नहीं किया जाएगा।§4.3/1 समारोह प्रकार
T
कर सकते हैं का एक lvalue: [...]अगर हम बहाना है कि कार्यक्रम बीमार से नहीं बनाया गया था, संभावित स्पष्टीकरण मानक रूपांतरण है के प्रसार के रूप में परिवर्तित करें "सूचक से
T
"। परिणाम समारोह के लिए एक सूचक है।§4.12/1 अंकगणित, अनिश्चित गणना, सूचक, या सदस्य प्रकार के सूचक के लिए अंक
bool
के प्रकार के रूप में परिवर्तित किया जा सकता है। शून्य मान, शून्य सूचक मान, या शून्य सदस्य सूचक मानfalse
में परिवर्तित किया गया है; कोई अन्य मानtrue
में परिवर्तित कर दिया गया है। प्रत्यक्ष-प्रारंभिकरण (8.5) के लिए,std::nullptr_t
का एक प्रावधानbool
के प्रकार के रूप में परिवर्तित हो सकता है; परिणामी मानfalse
है।
यदि आप ऐसा करने पर जोर देते हैं, तो कोशिश:
std::cout << (void*)main << std::endl;
उस भाग को न भूलें जहां 'std: : ostream' में '<<' ऑपरेटर नहीं है जो हस्ताक्षर 'int (*) (शून्य) 'के साथ फ़ंक्शन पॉइंटर स्वीकार करता है, यही कारण है कि पॉइंटर को किसी अन्य प्रकार में परिवर्तित किया जा रहा है। –
[इस quuestion] में (http://stackoverflow.com/a/2741896/995714) मैंने देखा कि 'मुख्य' कई बार –
@ LưuVĩnhPhúc सी है। मैंने अब तक कोई मानक उद्धरण नहीं देखा है कि यह बीमार है सी में सुधार –
जिज्ञासा से बाहर, क्या आप उम्मीद कर रहे हैं * * मुद्रित करने के लिए इस कोड को? इस मामले में मुख्य एक समारोह सूचक है। –
@ जोनाथन रेनहार्ट: क्या यह है? याद रखें 'मुख्य' विशेष है ... – Deduplicator
यह शायद अपरिभाषित व्यवहार है। आप मुख्य नाम नहीं होगा। Http://stackoverflow.com/questions/2128321/can-main-function-call-itself-in-c/2128727#2128727 देखें। – juanchopanza