Expression evaluation in C++ involving unary operators -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 3 जवाब
  • 12 उत्तरों

क्यों सी / सी ++ इन मामलों में बाएं से दायीं ओर अभिव्यक्ति का मूल्यांकन नहीं करता है: प्रारंभ में एक्स = 1

  मूल्यांकन x + + + x 4 देता है। यदि सामान्य मूल्यांकन किया जाता है (++ की पूर्वता ++ से अधिक है) तो परिणाम 1 + 2 = 3 होना चाहिए < / P> 

इसी प्रकार:

  x + + x + x 6 x + x + + x देता है 4 देता है  

परिणाम क्यों हैं अलग?

और मामले:

  x + x ++ + x 5 देता है  

क्या रु ले इसके बजाय सी / सी ++ के द्वारा किया जाता है?

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

और यहां यदि आप अपरिभाषित व्यवहार के बारे में जानना चाहते हैं (वैरिएबल कारणों का क्या दुरुपयोग):


Comments