2013-10-15 15 views
6

निष्पादित करने के बाद अजीब जवाब निम्नलिखित कोड स्निपेट निष्पादित करने के बाद int डी 25 का मूल्य और 26 क्यों नहीं है?एन ++

int n = 20; 
int d = n++ + 5; 

Console.WriteLine(d); 
+5

संभावित डुप्लिकेट [++ i और i ++] के बीच अंतर क्या है (http://stackoverflow.com/questions/24853/what-is-the-difference-between-i-and द्वारा बढ़ाया गया है -i) –

+0

यह भी देखें: https://communities.coverity.com/blogs/development-testing-blog/2013/09/24/cc-and-c –

उत्तर

10

n++ के रूप में व्याख्या की है "पोस्ट-इंक्रिमेंट ऑपरेटर" है, जो के बाद केवल मान बढ़ाता है इसके शुरुआती मूल्य का उपयोग आस-पास की अभिव्यक्ति में किया गया है।

int d = n + 5; 
n = n + 1; 

, अपने मूल्य इस्तेमाल किया जाता है इससे पहले कि मूल्य को बढ़ा देते ++n, पूर्व वेतन वृद्धि ऑपरेटर का उपयोग करने के लिए:

आपका कोड के बराबर है।

+1

+1। –

3

क्योंकि आपको लगता है कि अभिव्यक्ति में वृद्धि की जाती मान का उपयोग करने ++n उपयोग करने के लिए की जरूरत है।

देखें, अभिव्यक्ति पेड़ में यह n incrementing नहीं कर रहा है और उसके बाद ही उस मूल्य का उपयोग क्योंकि n++n का मान देता है, लेकिन उनका उपयोग अगले अभिव्यक्ति के लिए यह बढ़ा देता है।

हालांकि, ++n वास्तव में इस अभिव्यक्ति के लिए n के बढ़ते मूल्य को वापस कर देगा।

इसलिए, n++ + 525 पैदा करता है जबकि ++n + 526 उत्पन्न करता है।

2

n++ का मतलब ऑपरेशन के बाद एडिशन निष्पादित करना है, इसलिए पहले डी n+5 के बराबर होगा और फिर n उठाया जाएगा।

2

क्योंकि n++ पहले मूल्य प्रदान करेंगे और यात्रा पूरी होने के बाद यह कारण इसकी दे रही है 25

इसलिए thats भी वृद्धि होगी,

int d= n++ + 5; 

int d = n + 5; 
+0

क्यों डाउनवोट ?????? बराबर surgarless वाक्यविन्यास तोड़ने के लिए – Neel

1
तुम्हारी वजह से

पोस्टफिक्स व्यक्त

int d = n++ + 5; 

जहां संकलक पहले घ करने के लिए मान असाइन उपयोग कर रहे हैं, लेकिन अगले

int d = ++n + 5; 

आप करेंगे में गया d'मूल्य 26

1

++: पद वेतन वृद्धि ऑपरेटर।

पोस्ट फाई ++ ऑपरेटर का परिणाम ऑपरेंड का मूल्य है।बाद परिणाम प्राप्त किया जाता है, संकार्य के मूल्य

इसलिए वृद्धि की जाती है,

int d= n++ + 5; 

ऊपर interpretaion के निष्पादन के बाद

int d = n + 5; 

रूप में व्याख्या की है। n 1.