Switch的应用场景如下:
调用一到多个函数
设置变量值或者返回一个值
执行一到多个代码片段
如果case标签很多,在switch的前两个使用场景中,使用查找表可以更高效的完成。例如下面的两种转换字符串的方式:
- char * Condition_String1(int condition) {
- switch(condition) {
- case 0: return "EQ";
- case 1: return "NE";
- case 2: return "CS";
- case 3: return "CC";
- case 4: return "MI";
- case 5: return "PL";
- case 6: return "VS";
- case 7: return "VC";
- case 8: return "HI";
- case 9: return "LS";
- case 10: return "GE";
- case 11: return "LT";
- case 12: return "GT";
- case 13: return "LE";
- case 14: return "";
- default: return 0;
- }
- }
- char * Condition_String2(int condition) {
- if ((unsigned) condition >= 15) return 0;
- return
- "EQ\0NE\0CS\0CC\0MI\0PL\0VS\0VC\0HI\0LS\0GE\0LT\0GT\0LE\0\0" +
- 3 * condition;
- }
第一个程序需要240 bytes,而第二个仅仅需要72 bytes。
|