C भाषा में ऑपरेटर्स का परिचय
ऑपरेटर डेटा पर ऑपरेशन करते हैं। इन्हें निम्न श्रेणियों में वर्गीकृत किया गया है:
- अंकगणितीय ऑपरेटर्स (Arithmetic Operators)
- संबंधपरक ऑपरेटर्स (Relational Operators)
- तार्किक ऑपरेटर्स (Logical Operators)
- असाइनमेंट ऑपरेटर्स (Assignment Operators)
- इन्क्रीमेंट और डिक्रीमेंट ऑपरेटर्स (Increment/Decrement Operators)
- बिटवाइज़ ऑपरेटर्स (Bitwise Operators)
- कंडीशनल ऑपरेटर (Conditional Operator)
- विशेष ऑपरेटर्स (Special Operators)
अंकगणितीय ऑपरेटर्स
ये संख्यात्मक गणनाओं के लिए उपयोग होते हैं: जोड़, घटाव, गुणा, भाग आदि।
| ऑपरेटर | विवरण | उदाहरण | a=20, b=10 | आउटपुट |
|---|---|---|---|---|
| + | जोड़ | a+b | 20+10 | 30 |
| - | घटाव | a-b | 20-10 | 10 |
| * | गुणा | a*b | 20*10 | 200 |
| / | भाग | a/b | 20/10 | 2 (भागफल) |
| % | मॉड्यूलर भाग (शेषफल) | a%b | 20%10 | 0 (शेषफल) |
प्रोग्राम उदाहरण
#include <stdio.h>
int main() {
int a = 20, b = 10;
printf("%d ", a+b);
printf("%d ", a-b);
printf("%d ", a*b);
printf("%d ", a/b);
printf("%d ", a%b);
return 0;
}
आउटपुट
30 10 200 2 0
संबंधपरक ऑपरेटर्स
ये दो एक्सप्रेशन की तुलना के लिए उपयोग होते हैं। परिणाम ट्रू (1) या फाल्स (0) होता है।
| ऑपरेटर | विवरण | उदाहरण | a=20, b=10 | आउटपुट |
|---|---|---|---|---|
| < | कम है | a<b | 10<20 | 1 |
| <= | कम या बराबर | a<=b | 10<=20 | 1 |
| > | अधिक है | a>b | 10>20 | 0 |
| >= | अधिक या बराबर | a>=b | 10>=20 | 0 |
| == | बराबर है | a==b | 10==20 | 0 |
| != | बराबर नहीं | a!=b | 10!=20 | 1 |
प्रोग्राम उदाहरण
#include <stdio.h>
int main() {
int a = 10, b = 20;
printf("%d ", a<b);
printf("%d ", a<=b);
printf("%d ", a>b);
printf("%d ", a>=b);
printf("%d ", a==b);
printf("%d ", a!=b);
return 0;
}
आउटपुट
1 1 0 0 0 1
तार्किक ऑपरेटर्स
ये दो या अधिक एक्सप्रेशन को तार्किक रूप से जोड़ते हैं: AND (&&), OR (||), NOT (!)।
तार्किक AND (&&) ट्रुथ टेबल
| exp1 | exp2 | exp1 && exp2 |
|---|---|---|
| T | T | T |
| T | F | F |
| F | T | F |
| F | F | F |
तार्किक OR (||) ट्रुथ टेबल
| exp1 | exp2 | exp1 || exp2 |
|---|---|---|
| T | T | T |
| T | F | T |
| F | T | T |
| F | F | F |
तार्किक NOT (!) ट्रुथ टेबल
| exp | !exp |
|---|---|
| T | F |
| F | T |
उदाहरण
| ऑपरेटर | विवरण | उदाहरण | a=10,b=20,c=30 | आउटपुट |
|---|---|---|---|---|
| && | तार्किक AND | (a>b)&&(a<c) | (10>20)&&(10<30) | 0 |
| || | तार्किक OR | (a>b)||(a<=c) | (10>20)||(10<30) | 1 |
| ! | तार्किक NOT | !(a>b) | !(10>20) | 1 |
प्रोग्राम उदाहरण
#include <stdio.h>
int main() {
int a = 10, b = 20, c = 30;
printf("%d ", (a>b) && (a<c));
printf("%d ", (a>b) || (a<c));
printf("%d ", !(a>b));
return 0;
}
आउटपुट
0 1 1
असाइनमेंट ऑपरेटर्स
ये वेरिएबल को मान असाइन करते हैं।
| ऑपरेटर | विवरण | उदाहरण |
|---|---|---|
| = | सिंपल असाइनमेंट | a=10 |
| +=, -=, *=, /=, %= | कंपाउंड असाइनमेंट | a+=10 (a=a+10) |
प्रोग्राम उदाहरण
#include <stdio.h>
int main() {
int a = 10;
printf("%d ", a);
a += 10;
printf("%d ", a);
return 0;
}
आउटपुट
10 20
इन्क्रीमेंट और डिक्रीमेंट ऑपरेटर्स
इन्क्रीमेंट ऑपरेटर (++)
वेरिएबल का मान 1 से बढ़ाता है। दो प्रकार:
- प्री-इन्क्रीमेंट (++a): पहले मान बढ़ता है, फिर उपयोग होता है।
- पोस्ट-इन्क्रीमेंट (a++): पहले उपयोग होता है, फिर मान बढ़ता है।
उदाहरण
// प्री-इन्क्रीमेंट
int a = 10, z;
z = ++a; // a=11, z=11
// पोस्ट-इन्क्रीमेंट
int a = 10, z;
z = a++; // z=10, a=11
डिक्रीमेंट ऑपरेटर (--)
वेरिएबल का मान 1 से घटाता है। दो प्रकार:
- प्री-डिक्रीमेंट (--a): पहले मान घटता है, फिर उपयोग होता है।
- पोस्ट-डिक्रीमेंट (a--): पहले उपयोग होता है, फिर मान घटता है।
उदाहरण
// प्री-डिक्रीमेंट
int a = 10, z;
z = --a; // a=9, z=9
// पोस्ट-डिक्रीमेंट
int a = 10, z;
z = a--; // z=10, a=9
बिटवाइज़ ऑपरेटर्स
ये बिट्स पर ऑपरेशन करते हैं।
| ऑपरेटर | विवरण |
|---|---|
| & | बिटवाइज़ AND |
| | | बिटवाइज़ OR |
| ^ | बिटवाइज़ XOR |
| << | लेफ्ट शिफ्ट |
| >> | राइट शिफ्ट |
| ~ | वन्स कॉम्प्लीमेंट |
बिटवाइज़ AND ट्रुथ टेबल
| a | b | a&b |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
बिटवाइज़ OR ट्रुथ टेबल
| a | b | a|b |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
बिटवाइज़ XOR ट्रुथ टेबल
| a | b | a^b |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
लेफ्ट शिफ्ट (<<)
मान को बाएं शिफ्ट करने से मान दोगुना हो जाता है। उदा: a=10, a<<1 = 20
राइट शिफ्ट (>>)
मान को दाएं शिफ्ट करने से मान आधा हो जाता है। उदा: a=10, a>>1 = 5
वन्स कॉम्प्लीमेंट (~)
सभी 0 को 1 और 1 को 0 में बदलता है।
प्रोग्राम उदाहरण
#include <stdio.h>
int main() {
int a = 12, b = 10;
printf("%d ", a & b); // 8
printf("%d ", a | b); // 14
printf("%d ", a ^ b); // 6
return 0;
}
आउटपुट
8 14 6
शिफ्ट ऑपरेटर्स का प्रोग्राम
#include <stdio.h>
int main() {
int a = 20, b = 10, c = 10;
printf("%d ", a << 1); // 40
printf("%d ", b >> 1); // 5
printf("%d ", ~c); // -11 (साइन्ड इंट के लिए)
return 0;
}
आउटपुट
40 5 -11
कंडीशनल ऑपरेटर (? :)
इसे टर्नरी ऑपरेटर भी कहते हैं।
exp1 ? exp2 : exp3
यदि exp1 सत्य है तो exp2 मूल्यांकित होता है, अन्यथा exp3।
प्रोग्राम उदाहरण
#include <stdio.h>
int main() {
int z = (5 > 3) ? 1 : 0;
printf("%d", z);
return 0;
}
आउटपुट
1
विशेष ऑपरेटर्स
- कॉमा (,): वेरिएबल्स को अलग करता है। उदा: a=10, b=20
- एड्रेस ऑफ (&): वेरिएबल का पता देता है।
- साइज़ ऑफ (sizeof): डेटा टाइप या वेरिएबल का आकार बाइट्स में देता है।
प्रोग्राम उदाहरण
#include <stdio.h>
int main() {
int a = 10;
float b = 20;
printf("a=%d b=%f", a, b);
printf(" a address =%p", &a);
printf(" b address =%p", &b);
printf(" a size = %zu", sizeof(a));
printf(" b size = %zu", sizeof(b));
return 0;
}
आउटपुट
a=10 b=20.000000 a address =0x7ffe... b address =0x7ffe... a size = 4 b size = 4