সি ভাষায় অপারেটর এবং এক্সপ্রেশন
অপারেটর ডেটার ওপর অপারেশন সম্পাদন করে। এগুলিকে নিম্নলিখিত শ্রেণিতে ভাগ করা যায়:
- অ্যারিথমেটিক অপারেটর (Arithmetic Operators)
- রিলেশনাল অপারেটর (Relational Operators)
- লজিক্যাল অপারেটর (Logical Operators)
- অ্যাসাইনমেন্ট অপারেটর (Assignment Operators)
- ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর (Increment and Decrement Operators)
- বিটওয়াইজ অপারেটর (Bitwise Operators)
- কন্ডিশনাল অপারেটর (Conditional Operators)
- স্পেশাল অপারেটর (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
রিলেশনাল অপারেটর
দুই এক্সপ্রেশন তুলনা করার জন্য এই অপারেটরগুলো ব্যবহৃত হয়। ফলাফল হয় true (1) অথবা false (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 |
লজিক্যাল অপারেটর
দুই বা তার অধিক এক্সপ্রেশন লজিক্যালভাবে একসাথে जोড়ার জন্য ব্যবহৃত হয়। মূলত তিনটি: লজিক্যাল 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 |
| +=, -=, *=, /=, %= | কম্পাউন্ড অ্যাসাইনমেন্ট | a+=10 অর্থাৎ a=a+10 |
ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর
ইনক্রিমেন্ট (++)
ভেরিয়েবলের মান ১ বাড়াতে ব্যবহৃত হয়। দুই ধরনের:
- প্রি-ইনক্রিমেন্ট (++a): আগে মান বাড়ায়, তারপর ব্যবহার করে।
- পোস্ট-ইনক্রিমেন্ট (a++): আগে ব্যবহার করে, তারপর মান বাড়ায়।
// প্রি-ইনক্রিমেন্ট
z = ++a; // a = a+1; z = a
// পোস্ট-ইনক্রিমেন্ট
z = a++; // z = a; a = a+1
ডিক্রিমেন্ট (--)
ভেরিয়েবলের মান ১ কমাতে ব্যবহৃত হয়।
- প্রি-ডিক্রিমেন্ট (--a): আগে মান কমায়, তারপর ব্যবহার করে।
- পোস্ট-ডিক্রিমেন্ট (a--): আগে ব্যবহার করে, তারপর মান কমায়।
বিটওয়াইজ অপারেটর
বিট লেভেলে অপারেশন সম্পাদন করে।
| অপারেটর | বিবরণ |
|---|---|
| & | বিটওয়াইজ AND |
| | | বিটওয়াইজ OR |
| ^ | বিটওয়াইজ XOR |
| << | লেফট শিফট |
| >> | রাইট শিফট |
| ~ | ওন্স কমপ্লিমেন্ট |
কন্ডিশনাল অপারেটর (?:)
একে টার্নারি অপারেটর ও বলা হয়। সিনট্যাক্স: exp1 ? exp2 : exp3। যদি exp1 true হয়, exp2 এক্সিকিউট হয়, অন্যথায় exp3।
স্পেশাল অপারেটর
- কমা (,): ভেরিয়েবল পৃথক করার জন্য।
- অ্যাড্রেস (&): ভেরিয়েবলের ঠিকানা পাওয়ার জন্য।
- সাইজঅফ (sizeof): ডেটা টাইপ বা ভেরিয়েবলের সাইজ (বাইটে) জানার জন্য।