在这段代码中,使用了 switch 语句将字母转换为连续的值。通常情况下,优化编译器执行这个任务不如在 switch 前使用简单连续数字条件来得好。我该如何检测所用的执行字符集,并且/或者得出这些字母是连续的,以便将其替换为简单条件语句?
static long digit_value(char c)
{
if (c >= '0' && c <= '9')
return (c-'0');
switch(c) {
case 'a':
case 'A':
return 10;
case 'b':
case 'B':
return 11;
case 'c':
case 'C':
return 12;
case 'd':
case 'D':
return 13;
case 'e':
case 'E':
return 14;
case 'f':
case 'F':
return 15;
case 'g':
case 'G':
return 16;
case 'h':
case 'H':
return 17;
case 'i':
case 'I':
return 18;
case 'j':
case 'J':
return 19;
case 'k':
case 'K':
return 20;
case 'l':
case 'L':
return 21;
case 'm':
case 'M':
return 22;
case 'n':
case 'N':
return 23;
case 'o':
case 'O':
return 24;
case 'p':
case 'P':
return 25;
case 'q':
case 'Q':
return 26;
case 'r':
case 'R':
return 27;
case 's':
case 'S':
return 28;
case 't':
case 'T':
return 29;
case 'u':
case 'U':
return 30;
case 'v':
case 'V':
return 31;
case 'w':
case 'W':
return 32;
case 'x':
case 'X':
return 33;
case 'y':
case 'Y':
return 34;
case 'z':
case 'Z':
return 35;
default:
break;
}
return -1;
}
'z'-'a'==25
来检测间隙是否存在会起到作用吗? - Gerhardh