मुझे सच में यकीन नहीं है कि यहां क्या आदेश है। सूचक पी के मूल्य में भिन्नता यह 2) में वृद्धि यह* dereferencing के बाद * पी ++ वृद्धि?
उत्तर
वृद्धि और गिरावट के बीच कोई आदेश नहीं है।हालांकि, *
ऑपरेटर p++
के परिणाम पर लागू होता है, जो वृद्धि से पहले p
का मूल मान है।
को देखते हुए q = *p++;
, क्ष मूल्य कि पी वेतन वृद्धि से पहले की ओर इशारा किया जाता है बढ़ाने से पहले के बाद 1) सूचक पी के मूल्य में भिन्नता: यह है। यह कहने का एक और तरीका यह है कि अभिव्यक्ति का मूल्य *p++
वह मान है जो पी बढ़ने से पहले इंगित करता है।
यह '* पी', वृद्धि 'पी' पा सकता है और' q' – asaelr
@asaelr पर '* p' (जो पहले गणना की गई) का मान असाइन करता है यह एक उचित बिंदु है कि असाइनमेंट वास्तव में वृद्धि के बाद हो सकता है, लेकिन प्रभाव वही है: पी बढ़ने से पहले q को * पी का मान प्राप्त होता है। – Caleb
प्रभाव वही है, लेकिन सवाल यह था कि पहले क्या होता है। – asaelr
पोस्टफ़िक्स ++ और - ऑपरेटरों को अनिवार्य रूप से उपसर्ग एकल ऑपरेटरों की तुलना में अधिक पूर्वता है। इसलिए, * पी ++ * (पी ++) के बराबर है; यह पी बढ़ता है, और उस मूल्य को वापस करता है जो पी को बढ़ाए जाने से पहले इंगित करता है।
मूल्य बढ़ाने के लिए पी, उपयोग (* पी) ++ द्वारा की ओर इशारा किया (या शायद ++ * p, अगर पक्ष प्रभाव के मूल्यांकन के क्रम आवश्यक नहीं है)।
इसे आज़माएं। कार्यक्रम
#include <stdio.h>
int main(void) {
int p[2];
int *q = p;
p[0] = 10;
p[1] = 100;
printf("%d\n", *q++);
printf("%d\n", *q);
return 0;
}
प्रिंट
10
100
दिखा रहा है कि ++
p
पर लागू होता है, *p
के लिए नहीं, और कहा कि वेतन वृद्धि भिन्नता के बाद होता है।
संपादित: (धन्यवाद मुझे समझाने कश्मीर & आर बाहर निकलने के लिए के लिए @EricLippert करने के लिए)
इतना ही नहीं भी हो सकते हैं एक होता है-के बाद संबंध है, लेकिन कश्मीर & आर पेज 203 के अनुसार, वहाँ होना चाहिए:
एक पोस्टफिक्स अभिव्यक्ति एक ++ या - ऑपरेटर के बाद एक पोस्टफिक्स अभिव्यक्ति है। अभिव्यक्ति की अभिव्यक्ति का मूल्य ऑपरेंड का मान है। के बाद मूल्य का उल्लेख किया है, संकार्य वृद्धि की जाती है (++) या कम कर (-) द्वारा 1.
(जोर मेरा)
दी, मैं नहीं मानता कि कश्मीर & आर मल्टीथ्रेडिंग की उपस्थिति में सी के अर्थशास्त्र के बारे में कुछ भी कहता है (Wikipedia के अनुसार 1 99 5 में पर्थ्रेड विनिर्देश जारी किया गया था), लेकिन एकल-थ्रेडेड प्रोग्राम के लिए & आर बहुत स्पष्ट है।
यहां एक पल पकड़ो। ** सी ** में निश्चित रूप से "संबंध के बाद होता है" संबंध हो सकता है; चाहे संकलक का कार्यान्वयन विवरण है या नहीं। एक सी संकलक के पास अनुक्रम बिंदु के भीतर दुष्प्रभावों को क्रमबद्ध करने का तरीका चुनने में व्यापक विवेकाधिकार होता है, और यदि यह चाहें तो यह सब कुछ के बाद ++ के दुष्प्रभाव का चयन कर सकता है। एक सी # कंपाइलर में समान अक्षांश नहीं है; सी # विनिर्देश ठीक उसी बारे में बहुत स्पष्ट है जब उस दुष्प्रभाव को देखा जाना चाहिए। (निष्पादन के एक धागे के भीतर देखा गया है; जिस क्रम में एक और धागा साइड इफेक्ट को देखता है वह निर्दिष्ट नहीं है।) –
operators table में, आप देख सकते हैं कि प्रत्यय ऑपरेटर ++
*
यूनरी ऑपरेटर से अधिक स्थान है।
इसलिए, *p++
वृद्धि p
(और नहीं *p
), और मूल्य वापस अगर पता है कि p
वेतन वृद्धि से पहले निहित (क्योंकि यह suffix ++
है)।
लेकिन आदेश कार्यान्वयन-निर्भर है। यह dereferencing p से शुरू हो सकता है, और फिर इसे बढ़ा सकता है, और यह p
का पुराना मान संग्रहीत कर सकता है, इसे बढ़ा सकता है, और उसके बाद पुराने मान को कम कर सकता है।
- 1. dereferencing नामक एक सूचक को dereferencing क्यों है?
- 2. अधिक भार पूर्व वेतन वृद्धि और बाद वेतन वृद्धि
- 3. "संदर्भ" और "dereferencing" का अर्थ
- 4. पूर्व वृद्धि वृद्धि बनाम पोस्ट-वृद्धि
- 5. एक वृद्धि के बाद memcached में अद्यतन समाप्ति समय है?
- 6. वृद्धि के बाद पुश अधिसूचना बैज साफ़ करें
- 7. पहले और बाद के सी # में वेतन वृद्धि/कमी ऑपरेटरों
- 8. चौड़ाई और ऊंचाई वृद्धि के बाद CGAffineTransformRotate एक UIView
- 9. पाइप के बाद "सेट-पी" क्यों काम नहीं करता है?
- 10. पनिंग टाइप करें, char [] और dereferencing
- 11. पी # सिंटैक्स पी/सिग्नल के लिए मार्शलए
- 12. वेबआरटीसी पी 2 पी -
- 13. पी 2 पी आधारित समाधान
- 14. पी 3 पी नीति आईई
- 15. सिंटेक्स सी (या सी ++) में एक सूचक dereferencing के लिए
- 16. सी ++ और वीओआईपी पी 2 पी
- 17. वास्तविक जीवन उदाहरणों में उपयोग किए जाने वाले पूर्व-कमी/वृद्धि के बाद पोस्ट-कमी/वृद्धि के बाद कब होता है?
- 18. वेब पी 2 पी वीडियो टकराव समाधान
- 19. पी 4 डिफ/पी 4 फ़ोल्डर डिफ
- 20. पी 2 पी (ब्राउज़र को ब्राउज़र) जावा
- 21. ट्विस्ट और पी 2 पी अनुप्रयोग
- 22. 'पी 0' <'पी! 'पायथन और पोस्टग्रेस्क्ल
- 23. वृद्धि ऊंचाई
- 24. वृद्धि/jQuery
- 25. पी 4
- 26. वृद्धि संख्या
- 27. पी/स्ट्रोक
- 28. पी/Invoke
- 29. पी/Invoke
- 30. पी 4
"बाद में वृद्धि और पोस्ट-कमी ऑपरेटर अपने ऑपरेंड के मूल्य को 1 तक बढ़ाते हैं (या घटाते हैं), लेकिन इसका मूल्य अभिव्यक्ति वृद्धि (या कमी) ऑपरेशन से पहले ऑपरेंड का मूल मूल्य है "https://en.wikipedia.org/wiki/Increment_and_decrement_operators – Blas