如何简化C++ switch()语句 实现多case分支合并为一行
结论
标准C++原生语法不支持你想要的「多个case值写在同一行匹配」的写法,强行用逗号合并多个case值会触发逻辑错误。
错误写法说明
如果你硬把多个case值写在同一行,比如写成case 1,2,3,4,5,9,10,11,12:,代码可以正常编译,但逗号运算符会忽略前面所有值,仅匹配最后一个值12,完全不符合你的需求。
简化方案
不用列全所有非夏季月份的case,调整逻辑即可大幅简化代码:
方案1:改用if-else逻辑(可读性最高)
int month; cout << "Enter a number to determine what month it is: "; cin >> month; if (month < 1 || month > 12) { cout << "Your input is out of range"; } else if (month == 6) { cout << "June"; } else if (month == 7) { cout << "July"; } else if (month == 8) { cout << "August"; } else { cout << "Not summer"; }
方案2:保留switch,调整default逻辑
int month; cout << "Enter a number to determine what month it is: "; cin >> month; switch (month) { case 6: cout << "June"; break; case 7: cout << "July"; break; case 8: cout << "August"; break; default: if (month >= 1 && month <= 12) { cout << "Not summer"; } else { cout << "Your input is out of range"; } }
内容的提问来源于stack exchange,提问作者Mysterai
相关产品推荐
相关产品推荐

