একটি switch স্টেটমেন্ট একটি ভেরিয়েবলকে একটি মানের তালিকার সাথে সমানতার জন্য পরীক্ষা করতে দেয়। প্রতিটি মানকে একটি case বলা হয়, এবং যেটি সুইচ করা হচ্ছে সেটি প্রতিটি switch case-এর জন্য চেক করা হয়।
সিনট্যাক্স
switch(expression) {
case constant-expression:
statement(s);
break; /* অপশনাল */
case constant-expression:
statement(s);
break; /* অপশনাল */
/* আপনি যেকোনো সংখ্যক case স্টেটমেন্ট রাখতে পারেন */
default: /* অপশনাল */
statement(s);
}
সুইচ স্টেটমেন্টের নিয়মাবলী
- expression যা switch স্টেটমেন্টে ব্যবহার করা হয় সেটি অবশ্যই ইন্টিগ্রাল বা এনিউমারেটেড টাইপের হতে হবে, বা একটি ক্লাস টাইপ যেখানে ক্লাসটির একটি একক কনভার্শন ফাংশন থাকে ইন্টিগ্রাল বা এনিউমারেটেড টাইপে।
- একটি switch-এ আপনি যেকোনো সংখ্যক case স্টেটমেন্ট রাখতে পারেন। প্রতিটি case-এর পর যে মানটির সাথে তুলনা করা হবে সেটি এবং একটি কোলন থাকে।
- একটি case-এর জন্য constant-expression অবশ্যই switch-এ থাকা ভেরিয়েবলের মতো একই ডেটা টাইপের হতে হবে, এবং এটি একটি কনস্ট্যান্ট বা লিটারেল হতে হবে।
- যখন সুইচ করা ভেরিয়েবলটি একটি case-এর সমান হয়, তখন সেই case-এর পিছনে থাকা স্টেটমেন্টগুলো এক্সিকিউট হবে যতক্ষণ না একটি break স্টেটমেন্ট পাওয়া যায়।
- যখন একটি break স্টেটমেন্ট পাওয়া যায়, সুইচ টার্মিনেট হয়, এবং কন্ট্রোল ফ্লো সুইচ স্টেটমেন্টের পরের লাইনে চলে যায়।
- প্রতিটি case-এ break থাকতে হবে এমন নয়। যদি কোনো break না থাকে, তবে কন্ট্রোল ফ্লো পরবর্তী case-এ ফেলে যাবে যতক্ষণ না একটি break পাওয়া যায়।
- একটি switch স্টেটমেন্টে একটি অপশনাল default case থাকতে পারে, যেটি সুইচের শেষে থাকতে হবে। default caseটি তখন কাজে লাগে যখন কোনো case true না হয়। default case-এ break দরকার নেই।
উদাহরণ কোড
#include <stdio.h>
int main() {
/* লোকাল ভেরিয়েবল সংজ্ঞায়ন */
char grade = 'B';
switch(grade) {
case 'A':
printf("Excellent!\n");
break;
case 'B':
case 'C':
printf("Well done\n");
break;
case 'D':
printf("You passed\n");
break;
case 'F':
printf("Better try again\n");
break;
default:
printf("Invalid grade\n");
}
printf("Your grade is %c\n", grade);
return 0;
}
আউটপুট
Well done Your grade is B