ฉันมีสถานการณ์ที่ฉันต้องการสองกรณีในคำสั่งสลับ C ++ ให้ทั้งสองตกไปอยู่ในกรณีที่สาม โดยเฉพาะกรณีที่สองจะตกไปสู่กรณีที่สามและกรณีแรกก็จะตกไปสู่กรณีที่สามโดยไม่ผ่านกรณีที่สอง
ฉันมีความคิดโง่ ๆ ลองทำดูและได้ผล! ฉันห่อกรณีที่สองใน...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
ฉันลองใช้ทั้ง C และ C ++ (ทั้งที่มีเสียงดัง) และมันก็ทำแบบเดียวกัน
คำถามของฉันคือ C / C ++ นี้ถูกต้องหรือไม่ มันควรจะทำอย่างไร?