新特征 1. goto 转移表 一些编译器会把switch语句、多线程转换成goto 转移表作为汇编格式 int i = 0; static void * ptr[3]={&&label1, &&label2, &&label3}; goto *ptr[i]; label1: printf("label1\n"); return 0; label2: printf("label2\n"); return 0; label3: printf("label3\n"); return 0; 2. 单标签case 升级 为 范围case/case范围 (多标签) enum kind { alpha, number, white, other }; enum kind char_class(char c) { enum kind result; switch(c) { case 'a' ... 'z':// case low ... high : // (包含边界值) case 'A' ... 'Z': result = alpha;// 字母 break; case '0' ... '9': result = number;// 数字 break; case ' ': case '\n': case '\t': case '\r': case '\v': result = white;// 空白符 break; default: result = other;// 其他字符 break; } return result; }