निम्नलिखित कोड डिबग मोड और रिलीज़ मोड के तहत अलग-अलग परिणाम उत्पन्न करता है (विजुअल स्टूडियो 2008 का उपयोग) :रिलीज मोड में, कोड व्यवहार के रूप में नहीं की उम्मीद है
i: 0, result = 0
i: 1, result = 16
(...)
i:14, result = 224
i:15, result = 240
i:16, result = 255
रिलीज़ मोड, जहां मैं के उत्पादन: 15 परिणाम सही नहीं है:
i: 0, result = 0
i: 1, result = 16
(...)
i:14, result = 224
i:15, result = 255
i:16, result = 255
रिलीज मोड के तहत विजुअल स्टूडियो में "ऑप्टिमाइज़ेशन -> ऑप्टिमाइज़ नहीं करना" चुनकर, आउटपुट परिणाम सही होगा। हालांकि मैं जानना चाहता हूं कि ऑप्टिमाइज़ेशन प्रक्रिया गलत आउटपुट क्यों कर सकती है।
अद्यतन:
मोहित JainBy ने सुझाव दिया है, प्रिंट द्वारा:
printf("i:%2d, result = %3d, i*16=%d\n", i, result, i*16) ;
रिलीज़ मोड उत्पादन सही है:
i: 0, result = 0, i*16=0
i: 1, result = 16, i*16=16
(...)
i:14, result = 224, i*16=224
i:15, result = 240, i*16=240
i:16, result = 255, i*16=256
यह एक कंपाइलर बग (और उस पर काफी महत्वपूर्ण) जैसा दिखता है। – WhozCraig
@WhozCraig बस पोस्ट में 'i * 16' के आउटपुट को अपडेट करता है, और परिणाम सही है। –
@juanchopanza: एमएस और बगफिक्स से वीएस के साथ अपने अनुभव से वे उनके बारे में सूचित होने के बाद ऐसी बग ठीक करते हैं, लेकिन उन फिक्सेस को वीएस के पुराने संस्करणों पर लागू न करें, इसलिए यदि किसी किसी कारण से किसी पुराने व्यक्ति का उपयोग करने के लिए मजबूर होना पड़ता है वीएस का संस्करण, तब तक कोई भी ऐसी बग्स से फंस जाता है जब तक कोई एक नए संस्करण में अपग्रेड नहीं कर सकता। – Kaiserludi