आज मैं Eric Lippert द्वारा एक लेख पार किया जहां वह ऑपरेटरों की प्राथमिकता और मूल्यांकन के आदेश के बीच मिथक को साफ़ करने की कोशिश कर रहा था।
int [] arr = {0}; int value = arr [arr [0] ++]; मान = 1?
int[] arr = {0};
int value = arr[arr[0]++];
अब जब मैं चर मूल्य के मूल्य के बारे में सोचते हैं, मैं बस इसे एक होने की गणना: अंत में दो कोड स्निपेट है कि मुझे उलझन में मिला रहे थे, यहाँ पहली टुकड़ा है। यहां बताया गया है कि मैंने सोचा कि यह काम कर रहा है। इसके अंदर एक आइटम के साथ पूर्णांक की एक सरणी के रूप में
- पहले घोषित आगमन; यह आइटम का मान 0.
- दूसरा इस मामले में में arr [0] --0 का मान प्राप्त करें।
- तीसरा आगमन (जो अभी भी 0) [चरण 2 का मूल्य ] का मूल्य आगमन --gets [0] फिर --still 0.
- चौथे चरण के मूल्य निर्दिष्ट मिल 3 (0) परिवर्तनीय मूल्य के लिए। --value = 0 अब
- कदम का मूल्य में जोड़े 2 1 --Now आगमन [0] = 1.
जाहिर है यह गलत है। मैंने सी # चश्मा को कुछ स्पष्ट बयान के लिए खोजने की कोशिश की कि जब वास्तव में वृद्धि हो रही है, लेकिन कोई भी नहीं मिला। यहाँ
int[] data = { 11, 22, 33 };
int i = 1;
data[i++] = data[i] + 5;
अब है मैं कैसे लगता है कि इस कार्यक्रम सरणी घोषित करने और मैं करने के लिए 1 बताए --after निष्पादित करेंगे:
दूसरा टुकड़ा विषय पर एरिक के blog post की एक टिप्पणी से है। [Plz मुझे साथ सहन]
- डेटा प्राप्त करें [i] --1
- चरण 1 मूल्य 5 --6
- असाइन आंकड़ों के [i] (का मूल्य है जो में जोड़े अभी भी 1) कदम का मूल्य 2 --data [i] = 6
- वृद्धि मैं - मैं = 2
मेरी समझ के अनुसार, इस सरणी अब मान {11, 27 को शामिल करना चाहिए, 33}। हालांकि, जब मैंने सरणी मानों को मुद्रित करने के लिए प्रेरित किया तो मुझे मिला: {11, 38, 33}। इसका मतलब है कि पोस्ट वृद्धि सरणी को संदर्भित करने से पहले हुई थी!
कैसे आते हैं? क्या यह पोस्ट वृद्धि पोस्ट नहीं होने वाली है? यानी सब कुछ के बाद होता है।
मुझे क्या याद आ रही है?
आपका पांचवें चरण के रूप में अपने बयान के बारे में सोचना है वैसे भी सही नहीं है। "चरण 2 1 के मूल्य में जोड़ें - अब तीर [0] = 1." सरणी से लिया/कॉपी किया गया मान एक के साथ बढ़ाया जाता है, लेकिन ** ** में मान ** सरणी को छुआ नहीं जाता है। तो कथन arr [0] = 1 गलत है। चरण 5 पर एआर [0] = 1 से प्रतिलिपि मूल्य। – Gertjan
ठीक है, मैंने अभी कोड चलाया है और मुझे पहले जवाब के लिए मान 0 और दूसरा के रूप में {11,27,33} मिला है ... क्या यह चीज़ संकलक विशिष्ट है ? – bubblegum
@Swabha आप सुनिश्चित हैं कि आप सी # का उपयोग कर रहे हैं? – Galilyou