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

C भाषा में मूल्यांकन (Evaluation), प्रीसिडेंस (Precedence) और एसोसिएटिविटी (Association)

एक्सप्रेशन्स का मूल्यांकन 'C' कंपाइलर द्वारा प्रीसिडेंस (प्राथमिकता) और एसोसिएटिविटी (साहचर्य) नियमों के आधार पर किया जाता है।

यदि एक एक्सप्रेशन में अलग-अलग प्राथमिकता के ऑपरेटर्स हैं, तो प्रीसिडेंस नियमों पर विचार किया जाता है।

उदाहरण: a = 10 - 2 * 5

यहां, 2 * 5 पहले मूल्यांकित होता है क्योंकि * की प्राथमिकता - और = से अधिक है।

परिणाम: a = 10 - 10 = 0

यदि एक एक्सप्रेशन में समान प्राथमिकता के ऑपरेटर्स हैं, तो एसोसिएटिविटी नियमों पर विचार किया जाता है (बाएं से दाएं या दाएं से बाएं)।

ऑपरेटर प्रीसिडेंस और एसोसिएटिविटी तालिका

प्रीसिडेंसऑपरेटर्सएसोसिएटिविटीविवरण
1 (उच्चतम)() [] -> . ++ -- (पोस्टफिक्स)बाएं से दाएंफंक्शन कॉल, सरणी सबस्क्रिप्ट, मेंबर एक्सेस, पोस्ट-इन्क्रीमेंट
2++ -- + - ! ~ * & (टाइप) sizeof (प्रीफिक्स/यूनरी)दाएं से बाएंप्री-इन्क्रीमेंट, यूनरी प्लस/माइनस, लॉजिकल NOT, बिटवाइज NOT, डीरेफरेंस, एड्रेस-ऑफ, कास्ट
3* / %बाएं से दाएंगुणात्मक
4+ -बाएं से दाएंयोजक
5<< >>बाएं से दाएंबिटवाइज शिफ्ट
6< <= > >=बाएं से दाएंरिलेशनल
7== !=बाएं से दाएंसमानता
8&बाएं से दाएंबिटवाइज AND
9^बाएं से दाएंबिटवाइज XOR
10|बाएं से दाएंबिटवाइज OR
11&&बाएं से दाएंलॉजिकल AND
12||बाएं से दाएंलॉजिकल OR
13?:दाएं से बाएंटर्नरी कंडीशनल
14= += -= *= /= %= &= ^= |= <<= >>=दाएं से बाएंअसाइनमेंट
15 (निम्नतम),बाएं से दाएंकॉमा ऑपरेटर

मूल्यांकन क्रम के उदाहरण

उदाहरण 1: मिश्रित प्रीसिडेंस

int x = 10 + 20 * 30 - 40 / 5;
// चरण 1: 20 * 30 = 600 (उच्चतम प्रीसिडेंस *)
// चरण 2: 40 / 5 = 8 (/ की प्रीसिडेंस * के समान, बाएं से दाएं)
// चरण 3: 10 + 600 = 610 (+ की प्रीसिडेंस कम)
// चरण 4: 610 - 8 = 602
// परिणाम: x = 602

उदाहरण 2: समान प्रीसिडेंस, बाएं से दाएं एसोसिएटिविटी

int x = 100 - 20 - 10;
// (100 - 20) - 10 = 80 - 10 = 70
// नहीं: 100 - (20 - 10) = 90

उदाहरण 3: असाइनमेंट - दाएं से बाएं एसोसिएटिविटी

int a, b, c;
a = b = c = 10;
// c = 10
// b = c = 10
// a = b = 10
// सभी 10 हो जाते हैं

उदाहरण 4: टर्नरी ऑपरेटर - दाएं से बाएं

int x = 1, y = 2, z = 3;
int result = x ? y : z;  // x सत्य (1) है, इसलिए result = y = 2

// नेस्टेड टर्नरी:
int max = a > b ? a : b > c ? b : c;
// पार्स होता है: a > b ? a : (b > c ? b : c)

उदाहरण 5: प्रीफिक्स vs पोस्टफिक्स

int a = 5;
int b = ++a + a++;  // अनिर्दिष्ट व्यवहार! एक ही एक्सप्रेशन में एक ही वेरिएबल मॉडिफाई और रीड करना
// C मानक: अनिर्दिष्ट व्यवहार - कंपाइलर पर निर्भर

पैरेंथेसिस का उपयोग

स्पष्टता के लिए और इच्छित क्रम लागू करने के लिए पैरेंथेसिस का उपयोग करें:

// अस्पष्ट:
x = a + b * c - d / e;

// स्पष्ट:
x = a + (b * c) - (d / e);

// या इच्छित क्रम लागू करने के लिए:
x = (a + b) * (c - d) / e;

सर्वोत्तम अभ्यास

  • संदेह होने पर पैरेंथेसिस का उपयोग करें - यह पठनीयता में सुधार करता है और बग्स रोकता है।
  • एक ही एक्सप्रेशन में एक ही वेरिएबल को मॉडिफाई और रीड न करें (अनिर्दिष्ट व्यवहार)।
  • कॉम्प्लेक्स एक्सप्रेशन्स को सरल स्टेटमेंट्स में तोड़ें।
  • कंपाइलर चेतावनियां सक्षम करें (-Wall -Wextra)।
  1. C भाषा में मूल्यांकन (Evaluation), प्रीसिडेंस (Precedence) और एसोसिएटिविटी (Association) C भाषा में मूल्यांकन (Evaluation), प्रीसिडेंस (Precedence) और एसोसिएटिविटी (Association)

    एक्सप्रेशन्स का मूल्यांकन C कंपाइलर द्वारा प्रीसिडेंस (प्राथमिकता) और एसोसिएटिविटी (साहचर्य) नियमों के आधार पर किया जाता है। यदि एक एक्सप्रेशन में अलग-अलग प्राथमिकता के ऑपरेटर्स हैं, तो प्रीसिडेंस नियमों पर विचार किया जाता है। उदाहरण: a = 10 - 2 * 5 यहां, 2 * 5 पहले मूल्यांकित होता है क्योंकि * की

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

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

  1. C भाषा में अप्रत्यक्ष और स्पष्ट प्रकार रूपांतरण (Implicit and Explicit Type Conversion) C भाषा में अप्रत्यक्ष और स्पष्ट प्रकार रूपांतरण (Implicit and Explicit Type Conversion)

    प्रकार रूपांतरण (Type Conversion) एक डेटा प्रकार के मान को दूसरे डेटा प्रकार में बदलना। दो प्रकार: अप्रत्यक्ष (Implicit) - कंपाइलर स्वतः करता है स्पष्ट (Explicit) - प्रोग्रामर कास्ट ऑपरेटर से करता है 1. अप्रत्यक्ष प्रकार रूपांतरण (Implicit Type Conversion) कंपाइलर द्वारा स्वतः जब ऑपरेंड्स अलग प