আমার এমন একটি পরিস্থিতি রয়েছে যেখানে আমি সি ++ স্যুইচ বিবৃতিতে দুটি ক্ষেত্রেই তৃতীয় কেস হতে পারি। বিশেষত, দ্বিতীয় কেসটি তৃতীয় কেসের মধ্যে পড়বে, এবং প্রথম কেসটিও দ্বিতীয় মামলার মধ্য দিয়ে না গিয়েই তৃতীয় মামলায় পড়ে যাবে ।
আমি একটি বোবা ধারণা ছিল, এটি চেষ্টা, এবং এটি কার্যকর! আমি একজন দ্বিতীয় ক্ষেত্রে আবৃত if (0) {
... }
। দেখে মনে হচ্ছে:
#ifdef __cplusplus
# include <cstdio>
#else
# include <stdio.h>
#endif
int main(void) {
for (int i = 0; i < 3; i++) {
printf("%d: ", i);
switch (i) {
case 0:
putchar('a');
// @fallthrough@
if (0) { // fall past all of case 1 (!)
case 1:
putchar('b');
// @fallthrough@
}
case 2:
putchar('c');
break;
}
putchar('\n');
}
return 0;
}
আমি যখন এটি চালনা করি, তখন আমি পছন্দসই আউটপুট পাই:
0: ac
1: bc
2: c
আমি এটি সি এবং সি উভয় ক্ষেত্রেই চেষ্টা করেছি (ঝনঝন দিয়ে উভয়) এবং এটি একই কাজ করেছিল।
আমার প্রশ্নগুলি: এটি কি বৈধ সি / সি ++? এটা কি এটা করার কথা?