एक निर्माण जैसा 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++;पर्याप्त है।