C Programming Operator সি প্রোগ্রামিং অপারেটর
এরিথমেটিক(arithmetic), কন্ডিশনাল(conditional) এবং বিটওয়াজ(bitwise) অপারেশন সম্পন্ন করার জন্য সি প্রোগ্রামিং এ অনেক ধরণের অপারেটর(oparetor) রয়েছে। এই অধ্যায়ে আপনি বিভিন্ন ধরণের সি অপারেটর এবং এদের ব্যবহার সম্মন্ধে জানবেন।
অপারেটর এক ধরণের প্রতীক(symbol) যা ভ্যালু(value) অথবা ভ্যারিয়েবলকে অপারেট করতে পারে। উদাহরণস্বরূপঃ +(যোগ চিহ্ন) একটি অপারেটর যা যোগের কাজে ব্যবহৃত হয়।
বিভিন্ন ধরণের অপারেশন সম্পাদনের জন্য সি প্রোগ্রামিং এ অনেক ধরণের অপারেটর রয়েছে। ভালভাবে বুঝার জন্য অপারেটরসমূহকে নিম্নোক্ত উপায়ে বিভক্ত করা যায়ঃ
সি প্রোগ্রামিং অপারেটর
- এরিথমেটিক অপারেটর - Arithmetic Operator
- ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর- Increment and Decrement Operator
- এসাইনমেন্ট অপারেটর - Assignment Operator
- রিলেশনাল অপারেটর - Relational Operator
- লজিকাল অপারেটর - Logical Operator
- কন্ডিশনাল অপারেটর - Conditional Operator
- বিটওয়াইজ অপারেটর - Bitwise Operator
- স্পেশিয়াল অপারেটর - Special Operator
সি এরিথমেটিক অপারেটর
এরিথমেটিক অপারেটর গাণিতিক হিসাব নিকাশ যেমন- যোগ, বিয়োগ, গুন এবং ভাগ ইত্যাদি কার্য সম্পন্ন করে।
অপারেটর | অপারেটেরের অর্থ | উদাহরণ(int a=11, b=5) | ফলাফল |
---|---|---|---|
+ | যোগ বা ইউনারী(unary) যোগ | a + b | 16 |
- | বিয়োগ বা ইউনারী বিয়োগ | a - b | 6 |
* | গুন | a * b | 55 |
/ | ভাগ | a / b | 2 |
% | ভাগের পরে ফলাফল ভাগশেষ(মডিউলো অপারেটর) | a % b | 1 |
উদাহরণঃ এরিথমেটিক অপারেটর
// সি প্রোগ্রামে এরিথমেটিক অপারেটর কিভাবে কাজ করে এই উদাহরণের সাহায্যে তা দেখানো হলো।
#include <stdio.h>
int main()
{
int a = 11,b = 5, 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 = 16 a-b = 6 a*b = 55 a/b = 2 Remainder when a divided by b=1
+, - এবং * অপারেটর সঠিকভাবে যথাক্রমে যোগ, বিয়োগ এবং গুন করে।
সাধারনভাবে আপনি যদি 11 কে 5 (
11/5
)দিয় ভাগ করেন তাহলে ভাগফল পাবেন 2.2। কিন্তু আমাদের প্রোগ্রামের আউটপুট 2 পাওয়া গেছে।
কারণ উভয় ভ্যারিয়েবলের টাইপ ইন্টেজার। তাই আউটপুটও ইন্টেজার হয়েছে। কম্পাইলার দশমিক সংখ্যার দশমিকের পরের অংশকে কেটে ফেলেছে ফলে ফলাফল 2.2 এর পরিবর্তে 2 হয়েছে।
মডিউলো অপারেটর % এর মাধ্যমে ভাগশেষ পাওয়া যায়। উপরের উদাহরণে
a = 11
কে b = 5
দিয়ে ভাগ করায় ভাগশেষ 1 পাওয়া গেছে। শুধুমাত্র ইন্টেজারের ক্ষেত্রেই % অপারেটর ব্যবহৃত হয়।ধরুন a = 10.0, b = 4.0, c = 10 এবং d = 4 তাহলে সি প্রোগ্রামিং a/b = 2.5 //কারণ উভয় অপারেন্ড ফ্লোটিং পয়েন্ট ভ্যারিয়েবল। a/d = 2.5 //কারণ একটি অপারেন্ড ফ্লোটিং পয়েন্ট ভ্যারিয়েবল। c/b = 2.5 //কারণ একটি অপারেন্ড ফ্লোটিং পয়েন্ট ভ্যারিয়েবল। c/d = 2 // কারণ উভয় অপারেন্ড ইন্টেজার ভ্যারিয়েবল।
ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর
কনস্ট্যান্ট অথবা ভ্যারিয়েবলের অপারেন্ডেকে ১ করে বৃদ্ধি বা হ্রাসের জন্য সি প্রোগ্রামিং এ যথাক্রমে দুটি অপারেটর আছে একটি হলো ইনক্রিমেন্ট(increment) ++ এবং অপরটি হলো ডিক্রিমেন্ট(decrement) --।
ইনক্রিমেন্ট অপারেটর ভ্যারিয়েবলের ভ্যালু এক করে বৃদ্ধি করে পক্ষান্তরে ডিক্রিমেন্ট অপারেটর ভ্যালু এক করে হ্রাস করে। এই দুটি অপারেটরকে ইউনারী(unary) অপারেটর বলা হয় কারণ এরা সিঙ্গেল অপারেন্ডকে অপারেট করতে পারে।
উদাহরণঃ ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর
// সি প্রোগ্রামে ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর কিভাবে কাজ করে এই উদাহরণের সাহায্যে তা দেখানো হলো।
#include <stdio.h>
int main()
{
int a = 15, b = 150;
float c = 50.5, d = 80.5;
printf("++a = %d \n", ++a);
printf("--b = %d \n", --b);
printf("++c = %f \n", ++c);
printf("--d = %f \n", --d);
return 0;
}
আউটপুট
++a = 16 --b = 149 ++c = 51.500000 --d = 79.500000
এখানে অপারেটর ++ এবং -- প্রিফিক্স(prefix) হিসাবে ব্যবহৃত হয়েছে। এই অপারেটর দুটি পোস্টফিক্স(postfix) হিসাবেও ব্যবহৃত হতে পারে। যেমন-
a++
এবং a--
। ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর সম্বন্ধে আরোও জানতে সি প্রোগ্রামে ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর অধ্যায় ভিজিট করুন।সি এসাইনমেন্ট অপারেটর
ভ্যারিয়েবলে ভ্যালু এসাইন করা বা জমা রাখার জন্য এসাইনমেন্ট(assignment) অপারেটর ব্যবহৃত হয়। সবচেয়ে বেশী ব্যবহৃত এসাইনমেন্ট অপারেটর হলো =
অপারেটর | উদাহরন(int a=11, b=5) | একই রকম | ফলাফল |
---|---|---|---|
= | a = b | a = b | 5 |
+= | a += b | a = a+b | 16 |
-= | a -= b | a = a-b | 6 |
*= | a *= b | a = a*b | 55 |
/= | a /= b | a = a/b | 2 |
%= | a %= b | a = a%b | 1 |
উদাহরণঃ এসাইনমেন্ট অপারেটর
// সি প্রোগ্রামে এসাইনমেন্ট অপারেটর কিভাবে কাজ করে এই উদাহরণের সাহায্যে তা দেখানো হলো।
#include <stdio.h>
int main()
{
int a = 10, c;
c = a;
printf("c = %d \n", c);
c += a; // c = c+a
printf("c = %d \n", c);
c -= a; // c = c-a
printf("c = %d \n", c);
c *= a; // c = c*a
printf("c = %d \n", c);
c /= a; // c = c/a
printf("c = %d \n", c);
c %= a; // c = c%a
printf("c = %d \n", c);
return 0;
}
আউটপুট
c = 10 c = 20 c = 10 c = 100 c = 10 c = 0
সি রিলেশনাল অপারেটর
সি প্রোগ্রামিং এ রিলেশনাল অপারেটর(relational operator) দুটি অপারেন্ডের মধ্যে সম্পর্ক যাচাই করে। রিলেশন সত্যি(true) হলে 1 রিটার্ন করে; রিলেশন মিথ্যা(false) হলে 0 রিটার্ন করে।
সিদ্ধান্ত গ্রহণ(decision making) এবং লুপ(loop) এ রিলেশনাল অপারেটর ব্যবহৃত হয়।
অপারেটর | অপারেটরের অর্থ | উদাহরণ(int a=11, b=5) | ফলাফল |
---|---|---|---|
== | Equal to | a == b | False |
> | Greater than | a > b | True |
< | Less than | a < b | False |
!= | Not equal to | a != b | True |
>= | Greater than or equal to | a >= b | True |
<= | Less than or equal to | a <= b | False |
উদাহরণ: রিলেশনাল অপারেটর
// সি প্রোগ্রামে রিলেশনাল অপারেটর কিভাবে কাজ করে এই উদাহরণের সাহায্যে তা দেখানো হলো।
#include <stdio.h>
int main()
{
int a = 5, b = 5, c = 10;
printf("%d == %d = %d \n", a, b, a == b); // true
printf("%d == %d = %d \n", a, c, a == c); // false
printf("%d > %d = %d \n", a, b, a > b); //false
printf("%d > %d = %d \n", a, c, a > c); //false
printf("%d < %d = %d \n", a, b, a < b); //false
printf("%d < %d = %d \n", a, c, a < c); //true
printf("%d != %d = %d \n", a, b, a != b); //false
printf("%d != %d = %d \n", a, c, a != c); //true
printf("%d >= %d = %d \n", a, b, a >= b); //true
printf("%d >= %d = %d \n", a, c, a >= c); //false
printf("%d <= %d = %d \n", a, b, a <= b); //true
printf("%d <= %d = %d \n", a, c, a <= c); //true
return 0;
}
আউটপুট
5 == 5 = 1 5 == 10 = 0 5 > 5 = 0 5 > 10 = 0 5 < 5 = 0 5 < 10 = 1 5 != 5 = 0 5 != 10 = 1 5 >= 5 = 1 5 >= 10 = 0 5 <= 5 = 1 5 <= 10 = 1
সি লজিক্যাল অপারেটর
সি প্রোগ্রামিং এ &&, || এবং ! অপারেটরসমূহকে লজিক্যাল(Logial) অপারেটর বলা হয়। সি প্রোগ্রামিং এসিদ্ধান্ত গ্রহণে(in decision making ) সচারচর লজিক্যাল অপারেটর ব্যবহৃত হয়।
অপারেটর | অপারেটরের অর্থ | উদাহরণ(int a=11, b=5, c =15) | ফলাফল |
---|---|---|---|
&& | Logial AND - উভয় অপারেন্ড true হলে True | (a==b) && (b>c) | True |
|| | Logical OR - যেকোনো একটি অপারেন্ড true হলে True | (b==c) || (a>c) | False |
! | Logical NOT - অপারেন্ড false হলে True | !(b==c) | True |
উদাহরণঃ লজিক্যাল অপারেটর
// সি প্রোগ্রামে লজিক্যাল অপারেটর কিভাবে কাজ করে এই উদাহরণের সাহায্যে তা দেখানো হলো।
#include <stdio.h>
int main()
{
int a = 5, b = 5, c = 10, result;
result = (a = b) && (c > b);
printf("(a = b) && (c > b) equals to %d \n", result);
result = (a = b) && (c < b);
printf("(a = b) && (c < b) equals to %d \n", result);
result = (a = b) || (c < b);
printf("(a = b) || (c < b) equals to %d \n", result);
result = (a != b) || (c < b);
printf("(a != b) || (c < b) equals to %d \n", result);
result = !(a != b);
printf("!(a == b) equals to %d \n", result);
result = !(a == b);
printf("!(a == b) equals to %d \n", result);
return 0;
}
আউটপুট
(a = b) && (c > b) equals to 1 (a = b) && (c < b) equals to 0 (a = b) || (c < b) equals to 1 (a != b) || (c < b) equals to 0 !(a != b) equals to 1 !(a == b) equals to 0
উপরের উদাহরণের ব্যাখ্যা
(a = b)
এবং(c > b)
উভয় অপারেন্ড true হওয়ায়(a = b) && (c > 5)
এর ফলাফল 1 হয়েছে।- অপারেন্ড
(c < b)
এর ভ্যালু false হওয়ায়(a = b) && (c < b)
এর ফলাফল 0 হয়েছে। - অপারেন্ড
(a = b)
এর ভ্যালু true হওয়ায়(a = b) || (c < b)
এর ফলাফল 1 হয়েছে। -
(a != b)
এবং(c < b)
উভয় অপারেন্ড false হওয়ায়(a != b) || (c < b)
এর ফলাফল 0 হয়েছে। - অপারেন্ড
(a != b)
এর ভ্যালু false হওয়ায়!(a != b)
এর ফলাফল 1 হয়েছে। কারণ !(a != b) এর ভ্যালু true। - অপারেন্ড
(a == b)
এর ভ্যালু true হওয়ায়!(a == b)
এর ফলাফল 0 হয়েছে। কারণ!(a == b)
এর ভ্যালু false।
বিটওয়াইজ অপারেটর
হিসাব নিকাশের সময় গাণিতিক অপারেশন যেমন- যোগ, বিয়োগ, গুণ এবং ভাগ বিট-লেভেলে রূপান্তরিত হলে দ্রুত প্রোসেসিং হয় এবং শক্তি(power) সংরক্ষিত হয়।
সি প্রোগ্রামিং এ বিট-লেভেল অপারেশন সম্পন্ন করার জন্য বিটওয়াইজ(Bitwise) অপারেটর ব্যবহৃত হয়।
মনেকরি, নিচের টেবিলে x = 10 (বাইনারিতে 0000 1010) এবং y = 4 (বাইনারিতে 0000 0100)
অপারেটর | অপারেটরের অর্থ | উদাহরণ(x=10 এবং y=4) | ফলাফল |
---|---|---|---|
& | Bitwise AND | x& y = 0 (0000 0000) | 0 |
| | Bitwise OR | x | y = 14 (0000 1110) | 14 |
^ | Bitwise exclusive OR | x ^ y = 14 (0000 1110) | 14 |
~ | Bitwise complement | ~x = -11 (1111 0101) | -11 |
<< | Shift left | x<< 2 = 42 (0010 1000) | 42 |
>> | Shift right | x>> 2 = 2 (0000 0010) | 2 |
বিটওয়াইজ অপারেটর সম্মন্ধে আরোও জানতে আমাদের সি বিটওয়াইজ অপারেটর অধ্যায় ভিজিট করুন
অন্যান্য অপারেটর
কমা অপারেটর
সম্পর্কযুক্ত এক্সপ্রেশনসমূহকে একইসঙ্গে ডিক্লেয়ার(declare) করার জন্য কমা(comma) অপারেটর ব্যবহৃত হয়। উদাহরনস্বরুপঃ
int a, b = 10, c = 5, d;
sizeof অপারেটর
sizeof
অপারেটর হলো ইউনারী অপারেটর যা ডেটা যেমন- কনস্ট্যান্ট, ভ্যারিয়েবল, অ্যারে, স্ট্রাকচার ইত্যাদির সাইজ রিটার্ন করেসিনট্যাক্স
sizeof(variable)
উদাহরণঃ sizeof অপারেটর
#include <stdio.h>
#include<conio.h>
void main()
{
int a;
float b;
double c;
char d;
printf("Size of Integer: %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 character: %d byte\n",sizeof(d));
getch();
}
আউটপুট
Size of Integer: 2 bytes Size of float: 4 bytes Size of double: 8 bytes Size of character: 1 byte
সি টারনারী অপারেটর (?:)
যখন কোনো অপারেটর তিনটি অপারেন্ড(oparend) নিয়ে কাজ করে তাকে টারনারী(ternary) অপারেটর বলে। টারনারী অপারেটর দেখতে
?:
এমন। টারনারী অপারেটরকে কন্ডিশনাল অপারেটরও বলা হয়।কন্ডিশনাল অপারেটর সিনট্যাক্স
কন্ডিশনাল অপারেটরের কাজের ধাপ নিম্নে বর্ণনা করা হলোঃ
উপরের সিনট্যাক্সে বুলিয়ান এক্সপ্রেশন হলো কন্ডিশন এবং true part ও false part হয় ভ্যালু অথবা ভ্যারিয়েবল অথবা স্টেটমেন্ট অথবা যেকোনো গাণিতিক এক্সপ্রেশন হতে পারে। কন্ডিশন True হলে True part সম্পাদিত হয় অন্যথায় false part সম্পাদিত হয়।
উদাহরনঃ সি টারনারী(কন্ডিশনাল) অপারেটর
#include <stdio.h>
#include<conio.h>
void main()
{
int a, b, c, large;
clrscr();
printf("Enter any three number: ");
scanf("%d%d%d",&a,&b,&c);
large=a>b ? (a>c?a:c) : (b>c?b:c);
printf("Largest Number is: %d",large);
getch();
}
আউটপুট
Enter any three number: 10 15 7 Largest number is 15
No comments