c++ - Unexpected output -


<पूर्व> #include & lt; iostream & gt; Int main () {const int i = 10; Int * p = (int *) & amp; i; * पी = 5; Cout & lt; & lt; & amp; i & lt; & lt; "" & lt; & lt; p & lt; & lt; "\ n"; Cout & lt; & lt; i & lt; & lt; "" & lt; & lt; * p; वापसी 0; }

आउटपुट:

0x22ff44 0x22ff44

10 5

कृपया समझाओ।

आपने एक const वस्तु को संशोधित करने का प्रयास किया है, इसलिए व्यवहार अपरिभाषित है। कंपाइलर को यह मानने का अधिकार है कि const ऑब्जेक्ट का मान बदल नहीं सकता है, जो संभवत: आपके द्वारा देखे गए लक्षण बताते हैं। कंपाइलर को भी const ऑब्जेक्ट को केवल पढ़ने के लिए स्मृति में रखने का अधिकार है। यह आम तौर पर ऑटो आजीवन के साथ एक चर के लिए ऐसा नहीं करेगा, लेकिन बहुत कुछ होगा यदि const स्थिर जीवनकाल है; उस स्थिति में, कार्यक्रम क्रैश हो जाएगा (अधिकांश सिस्टम पर)।

Comments