1. परिचय
C भाषा मा अपरेटरहरूको प्राथमिकता क्रम प्रोग्रामको कार्यलाई सही रूपमा बुझ्न र इच्छित अनुसार नतिजा प्राप्त गर्न महत्त्वपूर्ण छ। विशेष गरी, अपरेटरहरूको मूल्यांकन क्रमलाई गलत बुझेमा, अनिच्छित नतिजा वा बगहरू उत्पन्न हुने सम्भावना बढ्छ। यस लेखमा, C भाषाका प्रमुख अपरेटरहरूको प्राथमिकता क्रम र संयोजन नियमहरूबारे विस्तृत रूपमा व्याख्या गरिनेछ, र विशिष्ट उदाहरणहरू समावेश गरेर त्यसको बुझाइलाई गहिरो बनाइनेछ।
2. अपरेटरको प्रकार र आधारभूत प्रयोग
2.1 अंकगणितीय अपरेटर
अंकगणितीय अपरेटरहरू संख्यात्मक गणना गर्नका लागि आधारभूत अपरेटरहरू हुन्। यी अपरेटरहरू प्रोग्रामभित्र प्रायः प्रयोग गरिन्छन्, त्यसैले आधारभूत कुरा राम्ररी बुझ्नु महत्त्वपूर्ण छ।
+
(जोड): दुई संख्याहरूलाई जोड्दछ।-
(घटाउ): दुई संख्याहरूलाई घटाउँछ।*
(गुणन): दुई संख्याहरूलाई गुणा गर्दछ।/
(भाग): दुई संख्याहरूलाई भाग गर्दछ (पूर्णांकहरूबीचको भागमा दशमलव भाग काटिन्छ)।%
(शेषफल): भागको बाँकी भाग पत्ता लगाउँछ।
उदाहरण:
int a = 10, b = 3;
int sum = a + b; // 13
int diff = a - b; // 7
int prod = a * b; // 30
int quot = a / b; // 3
int rem = a % b; // 1
2.2 तुलना अपरेटर
तुलना अपरेटरहरूले दुई मानहरूलाई तुलना गरी नतिजा सत्य (1) वा असत्य (0) को रूपमा फर्काउँछन्। सर्त शाखा र लूपमा प्रायः प्रयोग हुन्छ।
>
(ठूलो): बायाँपट्टि रहेको मान दायाँपट्टि भन्दा ठूलो भए सत्य।<
(सानो): बायाँपट्टि रहेको मान दायाँपट्टि भन्दा सानो भए सत्य।>=
(ठूलो वा बराबर): बायाँपट्टि रहेको मान दायाँपट्टि बराबर वा ठूलो भए सत्य।<=
(सानो वा बराबर): बायाँपट्टि रहेको मान दायाँपट्टि बराबर वा सानो भए सत्य।==
(बराबर): दायाँ-बायाँको मान बराबर भए सत्य।!=
(बराबर छैन): दायाँ-बायाँको मान फरक भए सत्य।
int a = 5, b = 10;
if (a < b) {
printf("a b भन्दा सानो छ
"); // प्रदर्शित हुन्छ
}

3. अपरेटरको प्राथमिकता र संयोजन नियम
3.1 अपरेटरको प्राथमिकता
अपरेटरको प्राथमिकता भनेको बहु अपरेटरहरू समावेश भएको अभिव्यक्तिमा कुन अपरेटर पहिले मूल्यांकन हुन्छ भन्ने निर्धारण हो। तल C भाषा मा अपरेटरको प्राथमिकता सूचीको केही भाग प्रस्तुत गरिएको छ। उच्च प्राथमिकता भएका अपरेटरहरू क्रम अनुसार राखिएका छन्।
प्राथमिकता | अपरेटर | विवरण |
---|---|---|
1 | () [] -> . | फङ्क्शन कल, एरे पहुँच, पोइन्टर सदस्य |
2 | ++ -- | पश्च इन्क्रिमेन्ट/डिक्रिमेन्ट |
3 | ++ -- | पूर्व इन्क्रिमेन्ट/डिक्रिमेन्ट, चिन्ह अपरेसन |
4 | * / % | गुणन, भाग, बाँकी |
5 | + - | जोड, घट |
6 | << >> | बिट शिफ्ट |
7 | < <= > >= | तुलनात्मक अपरेटर |
8 | == != | समानता, असमानता |
9 | & | बिट AND |
10 | ^ | बिट XOR |
11 | | | बिट OR |
12 | && | तार्किक AND |
13 | || | तार्किक OR |
14 | ? : | शर्तीय अपरेटर |
15 | = += -= | असाइन, संयुक्त असाइन |
16 | , | कोमा अपरेटर |
3.2 संयोजन नियम
संयोजन नियम भनेको समान प्राथमिकता भएका अपरेटरहरू धेरै भएमा, कुन दिशाबाट मूल्यांकन गरिन्छ भन्ने निर्धारण हो। अधिकांश अपरेटरहरू बायाँ संयोजन हुन्, तर केही अपरेटरहरू (जस्तै: असाइन अपरेटर, शर्तीय अपरेटर) दायाँ संयोजन हुन्।
- बायाँ संयोजन:
*
,+
,-
जस्ता अपरेटरहरू बायाँबाट दायाँ मूल्यांकन गरिन्छ। - दायाँ संयोजन: असाइन अपरेटर र शर्तीय अपरेटर
? :
दायाँबाट बायाँ मूल्यांकन गरिन्छ।
int a = 5, b = 10, c = 15;
int result = a - b + c; // बायाँ-देखि-उजाँ (a - b) + c = 0
4. विशिष्ट अपरेटरहरूमा प्राथमिकता सम्बन्धी ध्यान दिनुपर्ने बुँदा
4.1 तार्किक अपरेटरहरू
तार्किक AND(&&
)र तार्किक OR(||
)सर्त अभिव्यक्तिहरूलाई जोड्न प्रयोग गरिन्छ, तर &&
को प्राथमिकता ||
भन्दा उच्च भएको कारण, तलको जस्तो कोडमा सावधानी आवश्यक छ।
int a = 1, b = 0, c = 1;
if (a && b || c) {
printf("Truen"); // प्रदर्शित हुन्छ
}
यस उदाहरणमा, a && b
पहिले मूल्याङ्कन गरिन्छ, र त्यसको परिणाम c
सँग तार्किक OR(||
)द्वारा जोडिन्छ। सही क्रममा मूल्याङ्कन गर्नको लागि, कोष्ठकहरू प्रयोग गरेर स्पष्ट रूपमा क्रम निर्दिष्ट गर्नुहोस्।
if ((a && b) || c) {
// अधिक स्पष्ट मूल्याङ्कन
}
4.2 बिट अपरेटरहरू
बिट अपरेटरहरू(&
, |
, ^
)बिट स्तरमा कार्य गर्छन्, तर तिनीहरूको प्राथमिकता अंकगणितीय वा तुलना अपरेटरहरूभन्दा कम हुन्छ, त्यसैले अभिव्यक्तिहरू जटिल हुँदा सावधानी आवश्यक छ।
int x = 5; // 0101
int y = 3; // 0011
int result = x & y; // 0001 (बिट गुणन)
5. वास्तविक प्रोग्राम उदाहरण
अभिकर्ता को प्राथमिकता क्रमलाई गलत बुझ्न सजिलो हुने प्रोग्राम उदाहरण प्रस्तुत गर्दछौं। अगामी उदाहरणमा、||
र&&
को मूल्यांकन क्रम प्रायः भ्रमित हुन्छ।
#include <stdio.h>
int main() {
int a = 0, b = 1;
if (a == 0 || a == 1 && b == 0) {
printf("Truen"); // प्रदर्शित हुन्छ
}
return 0;
}
यस उदाहरणमा、a == 1 && b == 0
पहिले मूल्यांकन हुन्छ, तर अनपेक्षित परिणाम आउन सक्छ। सही परिणाम पाउनको लागि, कोष्ठक प्रयोग गरेर मूल्यांकन क्रम स्पष्ट गर्नुहोस्।
if ((a == 0 || a == 1) && b == 0) {
printf("Truen");
}
6. निष्कर्ष
C भाषा मा अपरेटरहरूको प्राथमिकता क्रम प्रोग्रामको सही कार्यका लागि अनिवार्य छ। जटिल अभिव्यक्तिहरूलाई ह्यान्डल गर्दा, प्राथमिकता क्रम र संयोजन नियमहरू बुझेर, कोष्ठकहरूलाई उपयुक्त रूपमा प्रयोग गरेर क्रम स्पष्ट गर्दा, अनपेक्षित बगहरू रोक्न सकिन्छ। अपरेटरहरूको प्राथमिकता क्रममा ध्यान दिएर, अझ सुरक्षित र प्रभावकारी प्रोग्रामिङ सम्भव हुनेछ।