অপারেটর হল একটি প্রতীক, যা কাজ করে কোন একটি ভ্যালু এর উপর অথবা একটি ভেরিয়েবল এর উপর. উদাহরণস্বরূপ: + একটি অপারেটর যা যোগ এর কাজ করে.
সি পোগ্রামিং এ অনেক অপারেটর আছে যা বিভিন্ন ধরনের কাজ করে থাকে।ভাল করে বুঝতে এদের কে বিভিন্ন শ্রেণীতে বিভক্ত করা হয়েছে।
সি প্রোগ্রামিং অপারেটর |
Arithmetic Operators |
Increment and Decrements Operators |
Assignment Operators |
Relational Operators |
Logical Operators |
Conditional Operators |
Bit-wise Operators |
Special Operators |
প্রতিটি অপারেটরের বিষদ বর্ননা নিচে দেওয়া হল
এরিথমেটিক অপারেটর (Arithmetic Operators):
অপারেটর | অপারেটর এর অর্থ |
+ | যোগ |
– | বিয়োগ |
* | গুন |
/ | ভাগ |
% | বিভাজন করার পর ভাগশেষ (মডুলাস বিভাজন) |
এরিথমেটিক অপারেটর এর উদাহরণঃ
/* এরিথমেটিক অপারেটর প্রোগ্রামিং সি তে কি ভাবে কাজ করে তা নিচের প্রোগ্রামে দেখানো হল */#include <stdio.h>int main()
{ int a=9,b=4,c;c=a+b; printf(“a+b=%d\n”,c); c=a-b; printf(“a-b=%d\n”,c); c=a*b; printf(“a*b=%d\n”,c); c=a/b; printf(“a/b=%d\n”,c); c=a%b; printf(“Remainder when a divided by b=%d\n”,c); return 0; } |
আউটপুটঃ
a+b=13 a-b=5 a*b=36 a/b=2 Remainder when a divided by b=1 |
ব্যাখ্যা:
এখান এ প্রোগ্রামটিতে +, -, * ওরা, আপনারা যা আশা করেছেন সেই ভাবেই কাজ করেছে। কিন্তু নরমালি হিসাব করলে আপনারা 9/4= 2.25 হত। কিন্ত এখান এ দেখাচ্ছে 9/4= ২ আর কারন হল উপর এ আমরা a, b ২টি ভেরিয়েবল ই ইন্টিজার টাইপ আর তাই আউটপুট ও ইন্টিজার টাইপ এ দেখাছে এবং a%b=1, দেখাছে এর কারন a=9 কে b=4, দিয়ে ভাগ করলে ভাগশেষ থাকে 1.
Suppose a=5.0, b=2.0, c=5 and d=2In C programminga/b=2.5a/d=2.5c/b=2.5
c/d=2 |
দ্রষ্টব্যঃ % অপারেটর শুধু মাত্র ইন্টিজার টাইপ ডেটাতে ব্যবহার করা হয়।
ইনক্রিমেন্ট(Increment) এবং ডিক্রিমেন্ট(Decrement) অপারেটর :
প্রোগ্রামিং সি তে “++” এবং “ – -” কে যথাক্রমে ইনক্রিমেন্ট(Increment) এবং ডিক্রিমেন্ট(Decrement) অপারেটর হিসেবে ব্যবহার করা হয়। এই দুইটা অপারেটরকেই ইউনারি অপারেটর বলা হয় যা সিঙ্গেল অপারেন্ডে ব্যবহার করা হয়। “++” এবং “ – –” এই দুইটা অপারেটর যথাক্রমে অপারেন্ডের সাথে ১ যোগ করে এবং অপারেন্ড থেকে ১ বিয়োগ করে। উদাহরণ সরূপ ,
ধরি, a=5 এবং b=10 a++; //a 6 হবে a–; //a 5 হবে ++a; //a 6 হবে –a; //a 5 হবে |
পোস্ট-ফিক্স এবং প্রি-ফিক্স হিসেবে “++” এবং “–” অপারেটরের মধ্যে পার্থক্য:
যখন “++” প্রি-ফিক্স হিসেবে ব্যবহার করা হবে, যেমন ++a, তখন “++a” আগে a এর মান ১ বৃদ্ধি করবে তারপর a এর মান দেখাবে। একইভাবে “++” যখন পোস্ট-ফিক্স হিসেবে ব্যবহার করা হবে,যেমন a++, তখন অপারেটর আগে অপারেন্ড এর মান রিটার্ন করবে এবং তারপর সেটার মান ১ বৃদ্ধি করবে।
“–” অপারেটর ও পোস্ট-ফিক্স এবং প্রি-ফিক্স হিসেবে একই ভাবে কাজ করে। নিচে একটি উদাহরণ এর সাহায্যে বিষয়টি বুঝানো হল।
#include <stdio.h>int main(){int c=2;printf(“%d\n”,c++);//এই স্টেটমেন্টটি প্রথমে c এর মান ২ ডিসপ্লে করবে তারপর c এর মান ১ বেড়ে ৩ হবে।printf(“%d”,++d ); //এই স্টেটমেন্টটি প্রথমে c এর মান ১ বাড়াবে এবং তারপর সেটা c এর মান ডিসপ্লে করবে।
return 0; } |
আউটপুট:
2 4 |
এসাইনমেন্ট অপারেটরস( Assignment Operators) :
বহুল ব্যবহৃত এসাইনমেন্ট অপারেটর হল “=” অপারেটরটি। এই অপারেটরটি, অপারেটর এর ডান পাশের মান এর বাম পশে এসাইন করে। উদাহরণ সরূপ
var=5 //5 is assigned to var
a=c; //value of c is assigned to a
5=c; // Error! 5 is a constant.
অপারেটর | উদাহরণ | অন্য রূপ |
= | a=b | a=b |
+= | a+=b | a=a+b |
-= | a-=b | a=a-b |
*= | a*=b | a=a*b |
/= | a/=b | a=a/b |
%= | a%=b | a=a%b |
রিলেশনাল অপারেটর (Relational Operators):
রিলেশনাল অপারেটর দুইটি অপারেন্ডের মধ্যের সম্পর্ক চেক করে। যদি সম্পর্ক টি সত্য হয় তাহলে এটা ১ ভেলু রিটার্ন করে এবং যদি মিথ্যা হয় তাহলে ০ ভেলু রিটার্ন করে। যেমন , a>b
এখানে > হল একটি রিলেশন অপারেটর। যদি a, b এর থেকে বড় হয় তাহলে a>b ১ রিটার্ন করবে আর যদি তা না হয় তাহলে ০ রিটার্ন করবে।
প্রোগ্রামিং সি তে ডিসিশন মেকিং এবং লুপ এ রিলেশনাল অপারেটর ব্যবহার করা হয়।
অপারেটর | অপারেটরের অর্থ | উদাহরণ |
== | Equal to | 5==3 returns false (0) |
> | Greater than | 5>3 returns true (1) |
< | Less than | 5<3 returns false (0) |
!= | Not equal to | 5!=3 returns true(1) |
>= | Greater than or equal to | 5>=3 returns true (1) |
<= | Less than or equal to | 5<=3 return false (0) |
লজিকাল অপারেটর (Logical Operators) :
রিলেশন অপারেটরস গুলার এক্সপ্রেশন একত্রিত করার জন্য লজিকাল অপারেটর ব্যবহার করা হয়। প্রোগ্রামিং সি তে ৩ টি লজিকাল অপারেটর রয়েছে।
অপারেটর | অপারেটরের অর্থ | উদাহরণ |
&& | Logial AND | If c=5 and d=2 then,((c==5) && (d>5)) returns false. |
|| | Logical OR | If c=5 and d=2 then, ((c==5) || (d>5)) returns true. |
! | Logical NOT | If c=5 then, !(c==5) returns false. |
ব্যাখ্যাঃ
((c==5) && (d>5)) এক্সপ্রেশনটি সত্য হওয়ার জন্য c==5 এবং d>5 এই দুইটা কন্ডিশন্ই সত্য হতে হবে, কিন্তু উদাহরণ এ দেওয়া d>5 কন্ডিশন্ টি মিথ্যা তাই এই এক্সপ্রেশনটি মিথ্যা।
((c==5)||(d>5)) এক্সপ্রেশনটি সত্য কারণ এই এক্সপ্রেশনটির ২ টা কন্ডিশন্ই সত্য।
!(c==5) এক্সপ্রেশনটি মিথ্যা কারণ কন্ডিশনে c=5 দেওয়া আছে।
কন্ডিশনাল অপারেটরস( Conditional Operators):
প্রোগ্রামিং সি তে ডিসিশন মেকিং এর জন্য কন্ডিশনাল অপারেটরস ব্যবহার করা হয়। যেমন , টেস্ট কন্ডিশন অনুসারে বিভন্ন স্টেটমেন্ট এক্সিকিউট করা এটা সত্য নাকি মিথ্যা তার উপর নির্ভর করে।
কন্ডিশনাল অপারেটরের সিনটেস্ক:
conditional_expression?expression1:expression2
যদি টেস্ট কন্ডিশন সত্য হয় তাহলে এক্সপ্রেশন ১ রিটার্ন করবে আর যদি মিথ্যা হয় তাহলে এক্সপ্রেশন ২ রিটার্ন করবে। উদাহরণ সরূপ:
#include <stdio.h>int main(){char feb; int days;printf(“Enter l if the year is leap year otherwise enter 0: “);
scanf(“%c”,&feb); days=(feb==’l’)?29:28; /*If test condition (feb==’l’) is true, days will be equal to 29. */ /*If test condition (feb==’l’) is false, days will be equal to 28. */ printf(“Number of days in February = %d”,days); return 0; } |
আউটপুট:
Enter l if the year is leap year otherwise enter n: lNumber of days in February = 29 |
বিটওয়াইজ অপারেটরস( Bitwise Operators) :
বিটওয়াইজ অপারেটর ডেটার প্রতিটি বিট এর সাথে কাজ করে। বিট লেভেল প্রোগ্রামিংয়ে বিটওয়াইজ অপারেটর ব্যবহার করা হয়। নিচে কিছু বিটওয়াইজ অপারেটরের নাম এবং তাদের অর্থ দেওয়া হল।
অপারেটর | অপারেটরের অর্থ |
& | Bitwise AND |
| | Bitwise OR |
^ | Bitwise exclusive OR |
~ | Bitwise complement |
<< | Shift left |
>> | Shift right |
কমা অপারেটর (Comma Operator):
পরস্পর সম্পর্কযুক্ত এক্সপ্রেশনগুলো একসাথে করার জন্য কমা অপারেটর ব্যবহার করা হয়। যেমন, int a,c=5,d;
সাইজঅফ অপারেটরস (size of operator):
এটা একটি ইউনারি অপারেটর যা ব্যবহার করা হয় ডেটাটাইপ,কনস্ট্যান্ট আ্যারে,স্ট্রাকচার্ সহ ইত্যাদির সাইজ জানার জন্য। উদাহরন সরুপ নিচের প্রোগ্রামটি দেওয়া হল।
#include <stdio.h>int main(){int a;float b;
double c; char d; printf(“Size of int=%d bytes\n”,sizeof(a)); printf(“Size of float=%d bytes\n”,sizeof(b)); printf(“Size of double=%d bytes\n”,sizeof(c)); printf(“Size of char=%d byte\n”,sizeof(d)); return 0; } |
আউটপুটঃ
Size of int=4 bytesSize of float=4 bytes
Size of double=8 bytes Size of char=1 byte |