2016-02-24 4 views
5

मैं इन दिनों सरणी का अध्ययन कर रहा हूं। मैं इस तरह से एक सरणी और उसके तत्व की प्रारंभ की घोषणा भर में आ गए हैं:सी ++: int x [+30] एक वैध घोषणा है?

int x[+30]; 
x[+1]=0; 

यह मैं एक छोटे से भ्रामक है।

x[n]=0; 

तो इसका मतलब है: मेरे मन में अवधारणा है जब हम लिखते हैं कि है

*(x+n)=0; 

तो लिख x[+1]*(x++1) का मतलब होगा और इस अवैध लगता है। कृपया इस अवधारणा को समझने में गलती के लिए मुझे सही करें।

+1

नोट, '* (x ++ 1) 'अमान्य क्योंकि' ++ 'एक वृद्धि ऑपरेटर है, अभिव्यक्ति' * ((x ++) 1) ' –

+0

@ utkarsh867 के रूप में पार्स किया गया है: सरणी क्षमता को स्पष्ट रूप से निर्दिष्ट करने का क्या उपयोग है हो + हो –

+2

ध्यान दें कि '* (x + + 1)' ** ** मान्य है। यहां महत्वपूर्ण नियम यह है कि परिवर्तन ** टोकन ** स्तर पर काम करता है, ** चरित्र ** स्तर नहीं। – MSalters

उत्तर

10

x[n] का अर्थ है *((x)+(n)) (ब्लैकेट नोट करें) और x[+1] का अर्थ *((x)+(+1)) है। यह मान्य है।

N3337 5.2.1 Subscripting

अभिव्यक्ति E1 [E2] * करने के लिए (परिभाषा के द्वारा) के समान है ((ई 1) + (E2))

+5

अच्छा ब्लैकसेट! –

+2

बहुत बढ़िया ब्लैकसेट। मैं लगभग वही मिला। – erip

+1

पैलेसेंटिस और ब्रेसेस भी अच्छे हैं। –

7

+ प्लस प्रतीक कार्य कर सकते हैं एक यूनरी ऑपरेटर के रूप में। इसका आमतौर पर कोई प्रभाव नहीं पड़ता है, लेकिन परिणाम यह है कि संख्या हल होने से पहले इसे हटा दिया जाता है। उदाहरण के लिए:

int x[+30]; 

int x[operator+(30)]; 

कौन सा तो हो जाता है

int x[30]; 

इस प्रकार, इस अभिव्यक्ति में बदल जाती है

x[+1] = 0; 

बस

012 के रूप में हल होगा
x[1] = 0; 

यह * (x ++ 1) के रूप में हल नहीं होगा, खासकर जब से यह C++ में मान्य वाक्यविन्यास नहीं है।

+1

मुझे नहीं लगता कि यूनी प्लस को 'int' तर्क के लिए 'ऑपरेटर +' में परिवर्तित कर दिया गया है, यह एक अंतर्निहित ऑपरेटर है। – TartanLlama

+0

@TartanLlama सभी उद्देश्यों और उद्देश्यों के लिए, इसका इलाज इस तरह किया जाता है। आप 'int n = 8 + +9;' जैसे अभिव्यक्ति लिख सकते हैं और संकलक इसे स्वीकार करेगा और इसे '8 + 9' ​​के रूप में पार्स करेगा। – Xirema

+1

लेकिन इसका 'ऑपरेटर +' के साथ कुछ लेना देना नहीं है, जिसे केवल तभी माना जाता है जब तर्क एक वर्ग या गणना प्रकार है।'+' ऑपरेटर 'ऑपरेटर +' जैसा ही नहीं है। – TartanLlama

संबंधित मुद्दे