उत्तर
अपने प्रश्न का उत्तर
सं
क्या होगा
यह होगा:
int x = 1; /* ASSUME THIS IS SO */
y = x = x + 1;
/* Results: */
y == 2;
x == 2;
यह कैसे संकलित
एक ही रूप में:
x += 1;
y = x;
क्यों इस अपरिभाषित
नहीं है क्योंकि आप एक ही अभिव्यक्ति आप इसे पढ़ में x
नहीं लिख रहे हैं। आप इसे अपने आप + 1
पर सेट करें, फिर y
को x
के मान पर असाइन करें।
आपका भविष्य
आप कोड भ्रमित आप पठनीयता के लिए कोष्ठक का उपयोग कर सकते हैं, तो:
y = x = (x + 1);
नहीं। आप केवल एक बार x
संशोधित, और =
के दाएँ संबद्धता कि काम की वजह से होता है y
पर असाइनमेंट से पहले। भले ही ऐसा हुआ, फिर भी x
का केवल एक संशोधन है। आपका कथन y = ++x
के रूप में कानूनी है।
नहीं, आपकी अभिव्यक्ति ठीक से परिभाषित की गई है। आप शायद y = x = x++;
की तलाश में थे, जो नहीं है।
'y = x = x ++ नहीं होगा;' y = x = x के बराबर हो; एक्स + = 1; '? इसे ठीक से परिभाषित क्यों नहीं किया जाएगा? – rzetterberg
या यह 'y = x = x + 1 के बराबर होगा; एक्स + = 1; ', या' y = x + 1 = x; एक्स + = 1; '? –
मैं पूछ रहा था क्योंकि मुझे यकीन नहीं था और मैं जानना चाहता था कि क्यों 'x + 1' ठीक था, लेकिन' x ++ 'नहीं था। – rzetterberg
सिर्फ अपनी जानकारी के लिए, मुनूट, असाइनमेंट के "वापसी मूल्य" के रूप में यह अपना मूल्य है, आप इसे अन्य चीजों के लिए भी उपयोग कर सकते हैं, जैसे 'if (1 == x = 1)', जो एक सुंदर आम है बग और कारण, डेवलपर्स 'x == 1' के बजाय' 1 == x' लिखना पसंद करते हैं (क्योंकि आप x से 1 असाइन नहीं कर सकते हैं)। – anroesti
एकमात्र डेवलपर्स जो मुझे पता है कि '1 == x' जैसी चीज़ें लिखते हैं, वे हैं जिनके साथ मैं काम नहीं करूंगा ... –
@andre: नहीं, "डेवलपर्स" इसे लिखना पसंद नहीं करते हैं। यह सकल, अशुद्ध, और बेकार है; बस पिछले दशक में शामिल हों और अपनी कंपाइलर चेतावनियां चालू करें। – GManNickG