Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C भाषा में सरणी का प्री-इन्क्रीमेंट और पोस्ट-इन्क्रीमेंट


इन्क्रीमेंट ऑपरेटर्स

ऑपरेटरनामव्यवहारसमतुल्य
++aप्री-इन्क्रीमेंटपहले बढ़ाएं, फिर मान उपयोग करेंa = a + 1; use a;
a++पोस्ट-इन्क्रीमेंटपहले मान उपयोग करें, फिर बढ़ाएंuse a; a = a + 1;

सरणी तत्वों के साथ


int arr[5] = {1, 2, 3, 25, 7};

a = ++arr[1];  // arr[1] पहले 2→3 होता है, फिर a = 3
b = arr[1]++;  // b = 3 (वर्तमान), फिर arr[1] 3→4 होता है
c = arr[a++];  // a=3 उपयोग → arr[3]=25, फिर a=4

उदाहरण 1

#include <stdio.h>

int main() {
    int a, b, c;
    int arr[5] = {1, 2, 3, 25, 7};
    
    a = ++arr[1];   // arr[1]=2→3, a=3
    b = arr[1]++;   // b=3, arr[1]=3→4
    c = arr[a++];   // a=3 उपयोग → arr[3]=25, फिर a=4
    
    printf("%d--%d--%d\n", a, b, c);
    return 0;
}

आउटपुट

4--3--25

चरण-दर-चरण व्याख्या

प्रारंभिक: arr = [1, 2, 3, 25, 7]

1. a = ++arr[1]
   arr[1] = 2 + 1 = 3
   a = 3
   arr = [1, 3, 3, 25, 7]

2. b = arr[1]++
   b = arr[1] = 3
   arr[1] = 3 + 1 = 4
   arr = [1, 4, 3, 25, 7]

3. c = arr[a++]
   a वर्तमान में 3 है
   arr[3] = 25 → c = 25
   a = 3 + 1 = 4

अंतिम: a=4, b=3, c=25, arr=[1,4,3,25,7]

उदाहरण 2: अलग सूचकांक

#include <stdio.h>

int main() {
    int a, b, c;
    int arr[5] = {1, 2, 3, 25, 7};
    
    a = ++arr[3];   // arr[3]=25→26, a=26
    b = arr[3]++;   // b=26, arr[3]=26→27
    c = arr[a++];   // a=26 → arr[26] आउट ऑफ बाउंड्स! UB
    
    printf("%d--%d--%d\n", a, b, c);
    return 0;
}

आउटपुट

27--26--0   (या क्रैश/कचरा - अनिर्धारित व्यवहार)

सावधानियाँ और सर्वोत्तम अभ्यास

❌ बचें: जटिल अभिव्यक्तियों में मिश्रित इन्क्रीमेंट


// पढ़ने में कठिन, बग-प्रवण
x = arr[i++] + arr[++j] * arr[k--];

✅ बेहतर: अलग स्टेटमेंट्स


// स्पष्ट, डीबग करने योग्य
arr[i]++;
int x = arr[i];
j++;
int y = arr[j];
k--;
int z = arr[k];
result = x + y * z;

सीक्वेंस पॉइंट्स (Sequence Points)

C में, एक पूर्ण अभिव्यक्ति (; पर समाप्त) के अंत में साइड इफेक्ट्स पूरे होने की गारंटी होती है। एक ही अभिव्यक्ति में एक ही ऑब्जेक्ट को दो बार संशोधित करना UB है:


i = i++;        // UB - अनिर्धारित
a[i] = i++;     // UB - i दो बार संशोधित
printf("%d %d", i++, i++);  // UB - आर्गुमेंट मूल्यांकन क्रम अनिर्दिष्ट
  1. C में पॉइंटर्स और ऐरे का संबंध C में पॉइंटर्स और ऐरे का संबंध

    पॉइंटर्स और ऐरे कंपाइलर ऐरे के सभी एलिमेंट्स के लिए सन्निहित मेमोरी लोकेशन्स आवंटित करता है। बेस एड्रेस पहले एलिमेंट का पता होता है। उदाहरण int a[5] = {10, 20, 30, 40, 50}; मेमोरी लेआउट (मान लें बेस एड्रेस 1000, int = 4 बाइट्स): एलिमेंटवैल्यूएड्रेस a[0]101000 a[1]201004 a[2]301008 a[3]401012 a[4]

  1. C भाषा में मोनोलिथिक और मॉड्यूलर प्रोग्रामिंग की व्याख्या C भाषा में मोनोलिथिक और मॉड्यूलर प्रोग्रामिंग की व्याख्या

    मोनोलिथिक प्रोग्रामिंग और मॉड्यूलर प्रोग्रामिंग के बीच अंतर को फायदे और नुकसान के साथ नीचे विस्तार से समझाया गया है। मोनोलिथिक प्रोग्रामिंग यदि हम संपूर्ण प्रोग्राम को एक ही फ़ंक्शन में लिखते हैं, यानी मेन फ़ंक्शन में, तो आप इसे मोनोलिथिक प्रकार की प्रोग्रामिंग कहेंगे। लेकिन, संपूर्ण लॉजिक को एक ही

  1. C भाषा में एल्गोरिदम और फ्लोचार्ट क्या है? C भाषा में एल्गोरिदम और फ्लोचार्ट क्या है?

    एल्गोरिदम एक चरण-दर-चरण प्रक्रिया है जो किसी समस्या को हल करने में सहायक होती है। यदि इसे अंग्रेजी जैसे वाक्यों में लिखा जाता है, तो इसे स्यूडो कोड (PSEUDO CODE) कहा जाता है। एल्गोरिदम के गुण एक एल्गोरिदम में निम्नलिखित पांच गुण होने चाहिए: इनपुट (Input) - शून्य या अधिक इनपुट्स आउटपुट (Output) - ए