解释这段程序 为何下标可以用字符

来源:百度知道 编辑:UC知道 时间:2024/07/02 16:54:03
#include <climits>

static signed char t[UCHAR_MAX + 1];

static bool init_table()
{
for (int i=0; i<sizeof(t); ++i)
{
t[i] = -1;
}
t['0'] = 0;
t['1'] = 1;
t['2'] = 2;
t['3'] = 3;
t['4'] = 4;
t['5'] = 5;
t['6'] = 6;
t['7'] = 7;
t['8'] = 8;
t['9'] = 9;

t['A'] = 10;///为何下标是字符:'A'
t['B'] = 11;
t['C'] = 12;
t['D'] = 13;
t['E'] = 14;
t['F'] = 15;

t['a'] = 10;
t['b'] = 11;
t['c'] = 12;
t['d'] = 13;
t['e'] = 14;
t['f'] = 15;

字符类型"char"其实和__int8一样,都是8位的整形。
跟踪系统自己的头文件,UCHAR_MAX == 255,显然是无符号窄字符集ASCII编码的最大值,0-255
能够盛放0-255这256个数的数组就是
static signed char t[UCHAR_MAX + 1];
而后,单引号框住的字符作为下标,编译器自动把字符转换为ASCII编码,也就是整数0-255,因此,可以这样啦!至于说双引号,就不行,框住的是字符串,顶多可以转换成指针的地址值。