switch Statement
switch ek variable ki value ke hisaab se multiple cases mein branch karta hai — jab bahut saari if-else if chains ho, switch usse zyada readable banata hai.
Har case ke end mein break zaroori hai, warna "fall-through" ho jaata hai — agla case bhi chal jaata hai chahe match na kare! Ye C ka ek bahut common gotcha hai (Java mein bhi same behavior hai).
int day = 3;
switch (day) {
case 1:
printf("Monday\n");
break;
case 2:
printf("Tuesday\n");
break;
case 3:
printf("Wednesday\n");
break;
default:
printf("Other day\n");
}- switch = multiple choice branching, if-else se zyada readable
- Har case ke end mein break zaroori
- break bhoolna = fall-through bug
switch tab better hai jab ek hi variable ki multiple specific values check karni ho (jaise menu options 1,2,3,4). if-else zyada flexible hai — ranges, multiple variables, ya complex conditions ke liye better hai (switch sirf exact match karta hai, ranges nahi).
// switch — exact values ke liye achha
switch (choice) {
case 1: printf("Add\n"); break;
case 2: printf("Subtract\n"); break;
default: printf("Invalid\n");
}
// if-else — ranges ke liye zaroori
if (marks >= 90) printf("A\n");
else if (marks >= 60) printf("B\n");Agar kai cases ka same result chahiye, unhe stack kar sakte ho (bina break ke beech mein) — ye intentional fall-through hai, jo problematic fall-through se alag hai (wo jaan-boojh kar hai, comment ke saath clear karna best practice hai).
switch (day) {
case 6:
case 7:
printf("Weekend!\n");
break;
default:
printf("Weekday\n");
}