एक निर्माण जैसा x = x++;
इंगित करता है कि आप शायद गलत समझ रहे हैं कि ++
ऑपरेटर क्या करता है:
// original code
int x = 7;
x = x++;
++
ऑपरेटर को हटाने के आधार पर, समान कार्य करने के लिए इसे फिर से लिखते हैं :
// behaves the same as the original code
int x = 7;
int tmp = x; // value of tmp here is 7
x = x + 1; // x temporarily equals 8 (this is the evaluation of ++)
x = tmp; // oops! we overwrote y with 7
अब, इसे करने के लिए फिर से लिखना (मुझे क्या लगता है) आप चाहते थे:
// original code
int x = 7;
x++;
यहां सूक्ष्मता यह है कि ++
ऑपरेटर एक अभिव्यक्ति के विपरीत चर को संशोधित करता हैx
, जैसे कि x + x
एक इंट वैल्यू का मूल्यांकन करना लेकिन चर x
को अपरिवर्तित छोड़ देना । आदरणीय for
पाश की तरह एक निर्माण पर विचार करें :
for(int i = 0; i < 10; i++)
{
System.out.println(i);
}
i++
वहाँ नोटिस ? यह एक ही ऑपरेटर है। हम इस for
लूप को इस तरह से फिर से लिख सकते हैं और यह समान व्यवहार करेगा:
for(int i = 0; i < 10; i = i + 1)
{
System.out.println(i);
}
मैं ++
ज्यादातर मामलों में बड़े अभिव्यक्तियों में ऑपरेटर का उपयोग करने के खिलाफ भी सलाह देता हूं । की सूक्ष्मता की वजह से जब यह पूर्व की तुलना में बाद के वेतन वृद्धि (में मूल चर को संशोधित करता है ++x
और x++
, क्रमशः), यह बहुत आसान सूक्ष्म कीड़े कि नीचे ट्रैक करने के लिए मुश्किल हो जाता है शुरू करने की है।
int x = 7; x = ++x;
बेशक, अभी भी भयानक कोड है, आपको आश्वस्त होने की आवश्यकता नहीं है।int x = 7; x++;
पर्याप्त है।