इंक्रीमेंट और डिक्रीमेंट ऑपरेटर: Difference between revisions
(Created page with "{{Short description|Unary operators that add or subtract one from their operand, respectively}} {{Refimprove|date=September 2014}} इंक्रीमेंट और डि...") |
No edit summary |
||
Line 1: | Line 1: | ||
{{Short description|Unary operators that add or subtract one from their operand, respectively}} | {{Short description|Unary operators that add or subtract one from their operand, respectively}} | ||
'''इंक्रीमेंट''' और '''डिक्रीमेंट ऑपरेटर''' [[यूनरी ऑपरेटर|एकल ऑपरेटर]] [[ऑपरेटर (प्रोग्रामिंग)|(प्रोग्रामिंग)]] हैं जो अपने [[ ओपेरंड |ओपेरंड]] को एक से बढ़ाते या घटाते हैं। | |||
इंक्रीमेंट और डिक्रीमेंट ऑपरेटर [[यूनरी ऑपरेटर]] [[ऑपरेटर (प्रोग्रामिंग)]] हैं जो अपने [[ ओपेरंड ]] को एक से बढ़ाते या घटाते हैं। | |||
वे | वे सामान्य रूप से [[अनिवार्य प्रोग्रामिंग]] [[प्रोग्रामिंग भाषा]]ओं में पाए जाते हैं। [[ सी (प्रोग्रामिंग भाषा) |C (प्रोग्रामिंग भाषा)]] जैसी भाषाओं में प्रत्येक ऑपरेटर के दो संस्करण (प्री- और पोस्ट-) आंशिक रूप से अलग सिमेंटिक के साथ होते हैं। | ||
B | B (C और इसके विभिन्न अवकल सहित) से सिंटैक्टिक रूप से प्राप्त भाषाओं में, इंक्रीमेंट ऑपरेटर को <code>++</code> के रूप में लिखा जाता है और डिक्रीमेंट ऑपरेटर को <code>--</code> कई अन्य भाषाएँ inc(x) और dec(x) फ़ंक्शन का उपयोग करती हैं। | ||
इंक्रीमेंट ऑपरेटर बढ़ता है, और डिक्रीमेंट ऑपरेटर घटता है, इसके ऑपरेंड का मान 1 | इंक्रीमेंट ऑपरेटर बढ़ता है, और डिक्रीमेंट ऑपरेटर घटता है, इसके ऑपरेंड का मान 1 ऑपरेंड में एक अंकगणितीय या [[ सूचक (कंप्यूटर प्रोग्रामिंग) |सूचक (कंप्यूटर प्रोग्रामिंग)]] [[डेटा प्रकार|डेटा टाइप]] होना चाहिए, और परिवर्तनीय डेटा ऑब्जेक्ट को संदर्भित करना चाहिए। पॉइंटर्स मान एक राशि से बढ़ा (या घटाया) हो जाता है जो उन्हें मेमोरी में समीपवर्ती (या पूर्व) तत्व को प्रदर्शित करता है। | ||
उन भाषाओं में जो ऑपरेटरों के दोनों संस्करणों का समर्थन करती हैं: | उन भाषाओं में जो ऑपरेटरों के दोनों संस्करणों का समर्थन करती हैं: | ||
* प्री-इन्क्रीमेंट और प्री-डिक्रीमेंट | * प्री-इन्क्रीमेंट और प्री-डिक्रीमेंट ऑपरेटर्स अपने ऑपरेंड को 1 से बढ़ाते (या घटाते) हैं, और एक्सप्रेशन का मान परिणामी इंक्रीमेंटेड (या डिक्रीमेंट) मान होता है। | ||
* पोस्ट-इंक्रीमेंट और पोस्ट-डिक्रीमेंट ऑपरेटर अपने ऑपरेंड के मान को 1 से बढ़ाते (या घटाते) हैं, लेकिन एक्सप्रेशन का मान इंक्रीमेंट (या डिक्रीमेंट) | * पोस्ट-इंक्रीमेंट और पोस्ट-डिक्रीमेंट ऑपरेटर अपने ऑपरेंड के मान को 1 से बढ़ाते (या घटाते) हैं, लेकिन एक्सप्रेशन का मान इंक्रीमेंट (या डिक्रीमेंट) संक्रिया से पहले ऑपरेंड का मान होता है। | ||
उन भाषाओं में जहां | उन भाषाओं में जहां इंक्रीमेंट/डिक्रीमेंट एक एक्सप्रेशन नहीं है (उदाहरण के लिए, गो (प्रोग्रामिंग भाषा)), केवल गो, पोस्ट ऑपरेटरों के स्थिति में केवल एक संस्करण की आवश्यकता है। | ||
चूंकि इंक्रीमेंट/डिक्रीमेंट ऑपरेटर अपने ऑपरेंड को संशोधित करता है, ऐसे ऑपरेंड का | चूंकि इंक्रीमेंट/डिक्रीमेंट ऑपरेटर अपने ऑपरेंड को संशोधित करता है, ऐसे ऑपरेंड का समान एक्सप्रेशन के अंदर एक से अधिक बार उपयोग अपरिभाषित परिणाम उत्पन्न कर सकता है। उदाहरण के लिए, <code style= white-space:nowrap >x - ++x</code> जैसे एक्सप्रेशन में, यह स्पष्ट नहीं है कि किस क्रम में सब्ट्रेक्शन और इंक्रीमेंट संक्रिया किया जाना चाहिए। ऐसे एक्सप्रेशन सामान्य रूप से [[अपरिभाषित व्यवहार]] का उपयोग करती हैं, और इससे संरक्षण किया जाना चाहिए। | ||
C जैसे टाइप किए गए पॉइंटर्स वाली भाषाओं में,इंक्रीमेंट ऑपरेटर पॉइंटर को उस प्रकार के अगले आइटम पर ले जाता है - उस प्रकार के आकार से पॉइंटर के मान को बढ़ाता है। जब एक सूचक (सही प्रकार का) किसी सरणी में किसी आइटम को इंगित करता है, तो इंक्रीमेंट (या डिक्रीमेंट) सूचक को उस सरणी के अगले (या पूर्व) आइटम पर इंगित करता है। इस प्रकार, एक सूचक को एक पूर्णांक में बढ़ाना इसे अगले पूर्णांक की ओर इंगित करता है सामान्य रूप से सूचक मान को 4 से बढ़ाता है;<ref> | |||
इंक्रीमेंट ऑपरेटर पॉइंटर को उस प्रकार के अगले आइटम पर ले जाता है - उस प्रकार के आकार से पॉइंटर के मान को बढ़ाता है। | |||
जब एक सूचक (सही प्रकार का) किसी सरणी में किसी आइटम को इंगित करता है, तो | |||
इस प्रकार, एक सूचक को एक पूर्णांक में बढ़ाना इसे अगले पूर्णांक की ओर इंगित करता है | |||
Richard M Reese. | Richard M Reese. | ||
[https://books.google.com/books?id=-U155tRMLJgC "Understanding and Using C Pointers"]. | [https://books.google.com/books?id=-U155tRMLJgC "Understanding and Using C Pointers"]. | ||
Line 27: | Line 23: | ||
2013. | 2013. | ||
{{ISBN|9781449344184}} | {{ISBN|9781449344184}} | ||
</ref> | </ref> 106 बाइट्स के आकार की संरचना में एक पॉइंटर को बढ़ाने से यह पॉइंटर मान को 106 तक बढ़ाकर अगली संरचना की ओर संकेत करता है।<ref> | ||
106 बाइट्स के आकार की संरचना में एक पॉइंटर को बढ़ाने से यह पॉइंटर मान को 106 तक बढ़ाकर अगली संरचना की ओर | |||
Richard Petersen. | Richard Petersen. | ||
[https://www.google.com/books/edition/Introductory_C_with_C++/euCvDwAAQBAJ "Introductory C with C++"]. | [https://www.google.com/books/edition/Introductory_C_with_C++/euCvDwAAQBAJ "Introductory C with C++"]. | ||
Line 37: | Line 32: | ||
== उदाहरण == | == उदाहरण == | ||
निम्नलिखित | निम्नलिखित C कोड खंड प्री और पोस्ट इंक्रीमेंट और डिक्रीमेंट ऑपरेटरों के बीच अंतर को दर्शाता है: | ||
<syntaxhighlight lang="c"> | <syntaxhighlight lang="c"> | ||
int x; | int x; | ||
Line 60: | Line 55: | ||
y = x--; // y is 1, x is now 0 | y = x--; // y is 1, x is now 0 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
इन ऑपरेटरों की | इन ऑपरेटरों की डिक्रीमेंट वाली भाषाओं में, समकक्ष परिणामों के लिए कोड की एक अतिरिक्त लाइन की आवश्यकता होती है: | ||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
# Pre-increment: y = ++x | # Pre-increment: y = ++x | ||
Line 72: | Line 67: | ||
x = x + 1 # x is now 2 | x = x + 1 # x is now 2 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
पोस्ट-इंक्रीमेंट ऑपरेटर | पोस्ट-इंक्रीमेंट ऑपरेटर सामान्य रूप से [[सरणी डेटा संरचना]] सबस्क्रिप्ट के साथ उपयोग किया जाता है। उदाहरण के लिए: | ||
<syntaxhighlight lang=C> | <syntaxhighlight lang=C> | ||
// Sum the elements of an array | // Sum the elements of an array | ||
Line 86: | Line 81: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
पोस्ट-इन्क्रीमेंट ऑपरेटर का उपयोग | पोस्ट-इन्क्रीमेंट ऑपरेटर का उपयोग सामान्य रूप से पॉइंटर (कंप्यूटर प्रोग्रामिंग) के साथ भी किया जाता है: | ||
<syntaxhighlight lang="c"> | <syntaxhighlight lang="c"> | ||
// Copy one array to another | // Copy one array to another | ||
Line 96: | Line 91: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
ध्यान दें कि ये उदाहरण अन्य C-जैसी भाषाओं | ध्यान दें कि ये उदाहरण अन्य C-जैसी भाषाओं जैसे C++ (प्रोग्रामिंग भाषा), जावा (प्रोग्रामिंग भाषा), और C# (प्रोग्रामिंग भाषा) में भी कार्य करते हैं। | ||
*इंक्रीमेंट ऑपरेटर को एक उदाहरण द्वारा प्रदर्शित किया जा सकता है:<syntaxhighlight lang="c"> | *इंक्रीमेंट ऑपरेटर को एक उदाहरण द्वारा प्रदर्शित किया जा सकता है:<syntaxhighlight lang="c"> | ||
Line 115: | Line 110: | ||
== सहायक भाषाएँ == | == सहायक भाषाएँ == | ||
निम्नलिखित सूची, हालांकि पूर्ण या सर्व-समावेशी नहीं है, कुछ प्रमुख प्रोग्रामिंग भाषाओं को सूचीबद्ध करती है जो | निम्नलिखित सूची, हालांकि पूर्ण या सर्व-समावेशी नहीं है, कुछ प्रमुख प्रोग्रामिंग भाषाओं को सूचीबद्ध करती है जो <code>++</code>/<code>--</code> इंक्रीमेंट/डिक्रीमेंट ऑपरेटरों का समर्थन करती हैं। | ||
{{col-begin}} | {{col-begin}} | ||
Line 122: | Line 117: | ||
* [[एडब्ल्यूके]]<ref>{{cite web|title=GNU Awk की उपयोगकर्ता मार्गदर्शिका|url=https://www.gnu.org/software/gawk/manual/html_node/Increment-Ops.html|publisher=Free Software Foundation}}</ref> | * [[एडब्ल्यूके]]<ref>{{cite web|title=GNU Awk की उपयोगकर्ता मार्गदर्शिका|url=https://www.gnu.org/software/gawk/manual/html_node/Increment-Ops.html|publisher=Free Software Foundation}}</ref> | ||
* [[बैश (यूनिक्स शेल)]]<ref>{{cite web|title=8.3. The Double-Parentheses Construct|url=http://tldp.org/LDP/abs/html/dblparens.html|publisher=The Linux Documentation Project}}</ref> | * [[बैश (यूनिक्स शेल)]]<ref>{{cite web|title=8.3. The Double-Parentheses Construct|url=http://tldp.org/LDP/abs/html/dblparens.html|publisher=The Linux Documentation Project}}</ref> | ||
* | * C (प्रोग्रामिंग भाषा)<ref>{{cite book|last1=Ritchie|first1=Brian W. Kernighan; Dennis M.|last2=Ritchie|first2=Dennis|title=सी प्रोग्रामिंग भाषा|date=1988|publisher=Prentice Hall|location=Englewood Cliffs, N.J.|isbn=0-13-110362-8|page=[https://archive.org/details/cprogramminglang00bria/page/18 18]|edition=2. ed., [Nachdr.]|url-access=registration|url=https://archive.org/details/cprogramminglang00bria/page/18}}</ref> | ||
* | * C ++<ref>{{cite web|title=Increment/decrement operators|url=http://en.cppreference.com/w/cpp/language/operator_incdec|publisher=cppreference.com}}</ref> | ||
* | * C शार्प (प्रोग्रामिंग भाषा)|सी#<ref>{{cite web|title=++ ऑपरेटर (सी # संदर्भ)|url=http://msdn.microsoft.com/en-us/library/36x43w8w.aspx|publisher=Microsoft Developer Network}}</ref> | ||
* [[कोल्डफ्यूजन मार्कअप | * [[कोल्डफ्यूजन मार्कअप भाषा]] | ||
{{col-break|width=25%}} | {{col-break|width=25%}} | ||
* [[ | * [[D (प्रोग्रामिंग भाषा)]]<ref>{{cite web|title=ऑपरेटर ओवरलोडिंग|url=https://dlang.org/spec/operatoroverloading.html|publisher=dlang.org}}</ref> | ||
* | * गो (प्रोग्रामिंग भाषा) | ||
* जावा (प्रोग्रामिंग भाषा) | * जावा (प्रोग्रामिंग भाषा) | ||
* [[जावास्क्रिप्ट]] | * [[जावास्क्रिप्ट]] | ||
* [[ | * [[ऑब्जेक्टिव-C]] | ||
* [[जीएनयू ऑक्टेव]] | * [[जीएनयू ऑक्टेव]] | ||
{{col-break}} | {{col-break}} | ||
* | * पीएआरआई / जीपी<ref>{{cite web|title=जीपी ऑपरेटर और उनकी प्राथमिकताएं|url=https://pari.math.u-bordeaux.fr/dochtml/html-stable/operators.html}}</ref> | ||
* [[पर्ल]] | * [[पर्ल]] | ||
* [[पीएचपी]] | * [[पीएचपी]] | ||
* [[पावरशेल]]<ref>{{cite web|title=असाइनमेंट ऑपरेटरों के बारे में|url=https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_assignment_operators}}</ref> | * [[पावरशेल]]<ref>{{cite web|title=असाइनमेंट ऑपरेटरों के बारे में|url=https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_assignment_operators}}</ref> | ||
* वाला (प्रोग्रामिंग भाषा) | * वाला (प्रोग्रामिंग भाषा) | ||
* | * वेक्स, हॉदिनी सॉफ्टवेयर में एक स्क्रिप्टिंग भाषा | ||
* [[वोल्फ्राम भाषा]]<ref>{{cite web|title=इंक्रीमेंट वोल्फ्राम | * [[वोल्फ्राम भाषा]]<ref>{{cite web|title=इंक्रीमेंट वोल्फ्राम भाषा सिंबल|url=https://reference.wolfram.com/language/ref/Increment.html|publisher=Wolfram Language Documentation Center}}</ref>{{col-end}} | ||
(ऐप्पल की [[स्विफ्ट (प्रोग्रामिंग भाषा)]] ने एक बार इन ऑपरेटरों का समर्थन किया था,<ref>{{cite web|title=बेसिक ऑपरेटर्स|url=https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/BasicOperators.html|publisher=developer.apple.com}}</ref> लेकिन समर्थन संस्करण 3 के रूप में हटा दिया गया था।) | (ऐप्पल की [[स्विफ्ट (प्रोग्रामिंग भाषा)]] ने एक बार इन ऑपरेटरों का समर्थन किया था,<ref>{{cite web|title=बेसिक ऑपरेटर्स|url=https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/BasicOperators.html|publisher=developer.apple.com}}</ref> लेकिन समर्थन संस्करण 3 के रूप में हटा दिया गया था।) | ||
[[ पास्कल (प्रोग्रामिंग भाषा) ]], [[ डेल्फी (प्रोग्रामिंग भाषा) ]], [[मॉड्यूल-2]], और [[ ओबेरॉन (प्रोग्रामिंग भाषा) ]] समान कार्य प्रदान करते हैं, लेकिन उन्हें inc(x) और dec(x) कहा जाता है। | [[ पास्कल (प्रोग्रामिंग भाषा) | पास्कल (प्रोग्रामिंग भाषा)]],[[ डेल्फी (प्रोग्रामिंग भाषा) |डेल्फी (प्रोग्रामिंग भाषा)]],[[मॉड्यूल-2]], और [[ ओबेरॉन (प्रोग्रामिंग भाषा) |ओबेरॉन (प्रोग्रामिंग भाषा)]] समान कार्य प्रदान करते हैं, लेकिन उन्हें inc(x) और dec(x) कहा जाता है। | ||
विशेष रूप से पायथन (प्रोग्रामिंग | विशेष रूप से पायथन (प्रोग्रामिंग भाषा) और [[ जंग (प्रोग्रामिंग भाषा) |आरयूएसटी (प्रोग्रामिंग भाषा)]] इन ऑपरेटरों का समर्थन नहीं करते हैं। | ||
== इतिहास == | == इतिहास == | ||
अवधारणा को [[केन थॉम्पसन]] द्वारा 1969 के आसपास | अवधारणा को [[केन थॉम्पसन]] द्वारा 1969 के आसपास B (प्रोग्रामिंग भाषा) में प्रस्तुत किया गया था।<ref name="sigplan">{{cite journal | first = Dennis M.| last = Ritchie | author-link = Dennis Ritchie | title = सी भाषा का विकास| date = March 1993 | journal = ACM SIGPLAN Notices | volume = 28 | issue = 3 | page = 5 | url = http://www.bell-labs.com/usr/dmr/www/chist.html | doi = 10.1145/155360.155580 | doi-access = free }}</ref> | ||
<blockquote>थॉम्पसन ++ और -- ऑपरेटरों का आविष्कार करके एक कदम आगे बढ़ गया, जो | <blockquote>थॉम्पसन ++ और -- ऑपरेटरों का आविष्कार करके एक कदम आगे बढ़ गया, जो इंक्रीमेंट या डिक्रीमेंट करता है; उनके प्रीफिक्स या पोस्टफिक्स की स्थिति यह निर्धारित करती है कि परिवर्तन ऑपरेंड के मान को नोट करने से पहले या बाद में होता है या नहीं है। वे B के प्रारम्भिक संस्करणों में नहीं थे, लेकिन पथ में प्रदर्शित हुए। लोग प्रायः अनुमान लगाते हैं कि उन्हें डीईसी पीडीपी-11 द्वारा प्रदान किए गए ऑटो-इन्क्रीमेंट और ऑटो-डिक्रीमेंट एड्रेस मोड का उपयोग करने के लिए बनाया गया था, जिस पर C और यूनिक्स पहली बार लोकप्रिय हुए थे। यह ऐतिहासिक रूप से असंभव है, क्योंकि जब B विकसित किया गया था तब कोई पीडीपी-11 नहीं था। हालाँकि, पीडीपी-7 में कुछ 'स्व-इन्क्रीमेंट' मेमोरी सेल्स थे, इस गुण के साथ कि उनके माध्यम से एक अप्रत्यक्ष मेमोरी संदर्भ ने सेल को बढ़ा दिया। इस सुविधा ने संभव्यता थॉम्पसन को ऐसे ऑपरेटरों का सुझाव दिया था; उन्हें प्रीफिक्स या पोस्टफिक्स दोनों बनाने का सामान्यीकरण उनका अपना था। वास्तव मे, स्व-इन्क्रीमेंट सेल का उपयोग प्रत्यक्ष ऑपरेटरों के कार्यान्वयन में नहीं किया गया था, और नवप्रवर्तन के लिए एक प्रबल प्रयोजन संभव्यता उनका अवलोकन था कि ++x का स्थानांतरण x=x+1 की तुलना मे छोटा था।</blockquote> | ||
== यह भी देखें == | == यह भी देखें == | ||
* | * संवर्धित असाइनमेंट <code>+=</code> और <code>-=</code> ऑपरेटरों के लिए | ||
*[[पीडीपी-7]] | *[[पीडीपी-7]] | ||
* [[पीडीपी-11]] | * [[पीडीपी-11]] | ||
* [[उत्तराधिकारी समारोह]] | * [[उत्तराधिकारी समारोह|आनुक्रमिक फ़ंक्शन]] | ||
==संदर्भ== | ==संदर्भ== |
Revision as of 11:59, 18 May 2023
इंक्रीमेंट और डिक्रीमेंट ऑपरेटर एकल ऑपरेटर (प्रोग्रामिंग) हैं जो अपने ओपेरंड को एक से बढ़ाते या घटाते हैं।
वे सामान्य रूप से अनिवार्य प्रोग्रामिंग प्रोग्रामिंग भाषाओं में पाए जाते हैं। C (प्रोग्रामिंग भाषा) जैसी भाषाओं में प्रत्येक ऑपरेटर के दो संस्करण (प्री- और पोस्ट-) आंशिक रूप से अलग सिमेंटिक के साथ होते हैं।
B (C और इसके विभिन्न अवकल सहित) से सिंटैक्टिक रूप से प्राप्त भाषाओं में, इंक्रीमेंट ऑपरेटर को ++
के रूप में लिखा जाता है और डिक्रीमेंट ऑपरेटर को --
कई अन्य भाषाएँ inc(x) और dec(x) फ़ंक्शन का उपयोग करती हैं।
इंक्रीमेंट ऑपरेटर बढ़ता है, और डिक्रीमेंट ऑपरेटर घटता है, इसके ऑपरेंड का मान 1 ऑपरेंड में एक अंकगणितीय या सूचक (कंप्यूटर प्रोग्रामिंग) डेटा टाइप होना चाहिए, और परिवर्तनीय डेटा ऑब्जेक्ट को संदर्भित करना चाहिए। पॉइंटर्स मान एक राशि से बढ़ा (या घटाया) हो जाता है जो उन्हें मेमोरी में समीपवर्ती (या पूर्व) तत्व को प्रदर्शित करता है।
उन भाषाओं में जो ऑपरेटरों के दोनों संस्करणों का समर्थन करती हैं:
- प्री-इन्क्रीमेंट और प्री-डिक्रीमेंट ऑपरेटर्स अपने ऑपरेंड को 1 से बढ़ाते (या घटाते) हैं, और एक्सप्रेशन का मान परिणामी इंक्रीमेंटेड (या डिक्रीमेंट) मान होता है।
- पोस्ट-इंक्रीमेंट और पोस्ट-डिक्रीमेंट ऑपरेटर अपने ऑपरेंड के मान को 1 से बढ़ाते (या घटाते) हैं, लेकिन एक्सप्रेशन का मान इंक्रीमेंट (या डिक्रीमेंट) संक्रिया से पहले ऑपरेंड का मान होता है।
उन भाषाओं में जहां इंक्रीमेंट/डिक्रीमेंट एक एक्सप्रेशन नहीं है (उदाहरण के लिए, गो (प्रोग्रामिंग भाषा)), केवल गो, पोस्ट ऑपरेटरों के स्थिति में केवल एक संस्करण की आवश्यकता है।
चूंकि इंक्रीमेंट/डिक्रीमेंट ऑपरेटर अपने ऑपरेंड को संशोधित करता है, ऐसे ऑपरेंड का समान एक्सप्रेशन के अंदर एक से अधिक बार उपयोग अपरिभाषित परिणाम उत्पन्न कर सकता है। उदाहरण के लिए, x - ++x
जैसे एक्सप्रेशन में, यह स्पष्ट नहीं है कि किस क्रम में सब्ट्रेक्शन और इंक्रीमेंट संक्रिया किया जाना चाहिए। ऐसे एक्सप्रेशन सामान्य रूप से अपरिभाषित व्यवहार का उपयोग करती हैं, और इससे संरक्षण किया जाना चाहिए।
C जैसे टाइप किए गए पॉइंटर्स वाली भाषाओं में,इंक्रीमेंट ऑपरेटर पॉइंटर को उस प्रकार के अगले आइटम पर ले जाता है - उस प्रकार के आकार से पॉइंटर के मान को बढ़ाता है। जब एक सूचक (सही प्रकार का) किसी सरणी में किसी आइटम को इंगित करता है, तो इंक्रीमेंट (या डिक्रीमेंट) सूचक को उस सरणी के अगले (या पूर्व) आइटम पर इंगित करता है। इस प्रकार, एक सूचक को एक पूर्णांक में बढ़ाना इसे अगले पूर्णांक की ओर इंगित करता है सामान्य रूप से सूचक मान को 4 से बढ़ाता है;[1] 106 बाइट्स के आकार की संरचना में एक पॉइंटर को बढ़ाने से यह पॉइंटर मान को 106 तक बढ़ाकर अगली संरचना की ओर संकेत करता है।[2]
उदाहरण
निम्नलिखित C कोड खंड प्री और पोस्ट इंक्रीमेंट और डिक्रीमेंट ऑपरेटरों के बीच अंतर को दर्शाता है:
int x;
int y;
// Increment operators
// Pre-increment: x is incremented by 1, then y is assigned the value of x
x = 1;
y = ++x; // x is now 2, y is also 2
// Post-increment: y is assigned the value of x, then x is incremented by 1
x = 1;
y = x++; // y is 1, x is now 2
// Decrement operators
// Pre-decrement: x is decremented by 1, then y is assigned the value of x
x = 1;
y = --x; // x is now 0, y is also 0
// Post-decrement: y is assigned the value of x, then x is decremented by 1
x = 1;
y = x--; // y is 1, x is now 0
इन ऑपरेटरों की डिक्रीमेंट वाली भाषाओं में, समकक्ष परिणामों के लिए कोड की एक अतिरिक्त लाइन की आवश्यकता होती है:
# Pre-increment: y = ++x
x = 1
x = x + 1 # x is now 2 (can be written as "x += 1" in Python)
y = x # y is also 2
# Post-increment: y = x++
x = 1
y = x # y is 1
x = x + 1 # x is now 2
पोस्ट-इंक्रीमेंट ऑपरेटर सामान्य रूप से सरणी डेटा संरचना सबस्क्रिप्ट के साथ उपयोग किया जाता है। उदाहरण के लिए:
// Sum the elements of an array
float sum_elements(float arr[], int n)
{
float sum = 0.0;
int i = 0;
while (i < n)
sum += arr[i++]; // Post-increment of i, which steps
// through n elements of the array
return sum;
}
पोस्ट-इन्क्रीमेंट ऑपरेटर का उपयोग सामान्य रूप से पॉइंटर (कंप्यूटर प्रोग्रामिंग) के साथ भी किया जाता है:
// Copy one array to another
void copy_array(float *src, float *dst, int n)
{
while (n-- > 0) // Loop that counts down from n to zero
*dst++ = *src++; // Copies element *(src) to *(dst),
// then increments both pointers
}
ध्यान दें कि ये उदाहरण अन्य C-जैसी भाषाओं जैसे C++ (प्रोग्रामिंग भाषा), जावा (प्रोग्रामिंग भाषा), और C# (प्रोग्रामिंग भाषा) में भी कार्य करते हैं।
- इंक्रीमेंट ऑपरेटर को एक उदाहरण द्वारा प्रदर्शित किया जा सकता है:
#include <stdio.h> int main() { int c = 2; printf("%d\n", c++); // this statement displays 2, then c is incremented by 1 to 3. printf("%d", ++c); // this statement increments c by 1, then c is displayed. return 0; }
- आउटपुट:
2 4
- आउटपुट:
सहायक भाषाएँ
निम्नलिखित सूची, हालांकि पूर्ण या सर्व-समावेशी नहीं है, कुछ प्रमुख प्रोग्रामिंग भाषाओं को सूचीबद्ध करती है जो ++
/--
इंक्रीमेंट/डिक्रीमेंट ऑपरेटरों का समर्थन करती हैं।
|
|
(ऐप्पल की स्विफ्ट (प्रोग्रामिंग भाषा) ने एक बार इन ऑपरेटरों का समर्थन किया था,[12] लेकिन समर्थन संस्करण 3 के रूप में हटा दिया गया था।)
पास्कल (प्रोग्रामिंग भाषा),डेल्फी (प्रोग्रामिंग भाषा),मॉड्यूल-2, और ओबेरॉन (प्रोग्रामिंग भाषा) समान कार्य प्रदान करते हैं, लेकिन उन्हें inc(x) और dec(x) कहा जाता है।
विशेष रूप से पायथन (प्रोग्रामिंग भाषा) और आरयूएसटी (प्रोग्रामिंग भाषा) इन ऑपरेटरों का समर्थन नहीं करते हैं।
इतिहास
अवधारणा को केन थॉम्पसन द्वारा 1969 के आसपास B (प्रोग्रामिंग भाषा) में प्रस्तुत किया गया था।[13]
थॉम्पसन ++ और -- ऑपरेटरों का आविष्कार करके एक कदम आगे बढ़ गया, जो इंक्रीमेंट या डिक्रीमेंट करता है; उनके प्रीफिक्स या पोस्टफिक्स की स्थिति यह निर्धारित करती है कि परिवर्तन ऑपरेंड के मान को नोट करने से पहले या बाद में होता है या नहीं है। वे B के प्रारम्भिक संस्करणों में नहीं थे, लेकिन पथ में प्रदर्शित हुए। लोग प्रायः अनुमान लगाते हैं कि उन्हें डीईसी पीडीपी-11 द्वारा प्रदान किए गए ऑटो-इन्क्रीमेंट और ऑटो-डिक्रीमेंट एड्रेस मोड का उपयोग करने के लिए बनाया गया था, जिस पर C और यूनिक्स पहली बार लोकप्रिय हुए थे। यह ऐतिहासिक रूप से असंभव है, क्योंकि जब B विकसित किया गया था तब कोई पीडीपी-11 नहीं था। हालाँकि, पीडीपी-7 में कुछ 'स्व-इन्क्रीमेंट' मेमोरी सेल्स थे, इस गुण के साथ कि उनके माध्यम से एक अप्रत्यक्ष मेमोरी संदर्भ ने सेल को बढ़ा दिया। इस सुविधा ने संभव्यता थॉम्पसन को ऐसे ऑपरेटरों का सुझाव दिया था; उन्हें प्रीफिक्स या पोस्टफिक्स दोनों बनाने का सामान्यीकरण उनका अपना था। वास्तव मे, स्व-इन्क्रीमेंट सेल का उपयोग प्रत्यक्ष ऑपरेटरों के कार्यान्वयन में नहीं किया गया था, और नवप्रवर्तन के लिए एक प्रबल प्रयोजन संभव्यता उनका अवलोकन था कि ++x का स्थानांतरण x=x+1 की तुलना मे छोटा था।
यह भी देखें
- संवर्धित असाइनमेंट
+=
और-=
ऑपरेटरों के लिए - पीडीपी-7
- पीडीपी-11
- आनुक्रमिक फ़ंक्शन
संदर्भ
- ↑ Richard M Reese. "Understanding and Using C Pointers". "Chapter 4. Pointers and Arrays". O'Reilly Media, Inc. 2013. ISBN 9781449344184
- ↑ Richard Petersen. "Introductory C with C++". 2019. Figure 12-12.
- ↑ "GNU Awk की उपयोगकर्ता मार्गदर्शिका". Free Software Foundation.
- ↑ "8.3. The Double-Parentheses Construct". The Linux Documentation Project.
- ↑ Ritchie, Brian W. Kernighan; Dennis M.; Ritchie, Dennis (1988). सी प्रोग्रामिंग भाषा (2. ed., [Nachdr.] ed.). Englewood Cliffs, N.J.: Prentice Hall. p. 18. ISBN 0-13-110362-8.
{{cite book}}
: CS1 maint: multiple names: authors list (link) - ↑ "Increment/decrement operators". cppreference.com.
- ↑ "++ ऑपरेटर (सी # संदर्भ)". Microsoft Developer Network.
- ↑ "ऑपरेटर ओवरलोडिंग". dlang.org.
- ↑ "जीपी ऑपरेटर और उनकी प्राथमिकताएं".
- ↑ "असाइनमेंट ऑपरेटरों के बारे में".
- ↑ "इंक्रीमेंट वोल्फ्राम भाषा सिंबल". Wolfram Language Documentation Center.
- ↑ "बेसिक ऑपरेटर्स". developer.apple.com.
- ↑ Ritchie, Dennis M. (March 1993). "सी भाषा का विकास". ACM SIGPLAN Notices. 28 (3): 5. doi:10.1145/155360.155580.