C中的一个奇奇怪怪的问题

做段码屏显示时遇到的,在“//显示数据的单位”部分switch中使用i没问题,使用running_data_index却不显示,不报错
添加“//该数据类型的符号”部分之前没有这个问题,添加之后出现,但是删掉该部分之后问题依然存在。

u16 running_data[4] = 0; //运行时显示的数据
u8 running_data_index = 0;
u8 running_data_unit[4] = {1,1,2,1}; //显示的数据的单位
u8 i = 0;

    if(data_display_time <= 65000)
    {
        //数码管显示的数据
        Ledseg_Disp_Number(running_data[running_data_index]/*running_data*/);
        //显示数据的单位                                   
        switch(i/*running_data_unit*/)    
        {
             case 1: XBYTE[LED_BUF_SEG_RIGHT] |= SEG_V;break;
            case 2: XBYTE[LED_BUF_SEG_RIGHT] |= SEG_Ac;break;
            case 3: XBYTE[LED_BUF_SEG_RIGHT] |= SEG_W;break;
            case 4: XBYTE[LED_BUF_SEG_RIGHT] |= SEG_KW;break;
        }
        //该数据类型的符号
        switch(i)
        {
             case 1: XBYTE[LED_BUF_SEG_ICONS] |= SEG_SUN;break;    //显示光伏板
            case 2: XBYTE[LED_BUF_SEG_ICONS] |= SEG_PLUG;break;    //显示插头
        }
    }
    else
    {
         data_display_time = 0;        //计时清零
        running_data_index++;        //轮流显示下标
        i++;
        if(running_data_index == 4)    //越界判断,共四个数据
        {
             running_data_index = 0;
            i=0;
        }
    }

水平有限,找不到为啥有问题,求指教!

running_data_unit是个数组啊,你怎么个switch啊

running_data_unit是个数组啊,你怎么个switch啊