switch语句如何与hex case

时间:2015-06-20 00:27:52

标签: c

我创建了一个将十六进制原因转换为另一个十六进制原因的函数。 该功能始终为默认情况。

static uint8_t convert_reason_code(uint32_t reason)
{
    printf("reason %u is ==== \n",reason);
    switch (reason) {

        case 0x02 :
           printf("reason A\n");
           return 0x01

        case 0x88 :
            printf("reason B\n");
            return  0x02;

        case 0x44 :
            printf("reason C\n");
            return 0x03 ;

        default:
            printf("default\n"); //always prints default
            return 0X00 ;
    }
}

如果我明确更改了函数内部的原因代码,那么 开关盒工作正常。

static uint8_t convert_reason_code(uint32_t reason)
{
    printf("reason %u is ==== \n",reason);
    reason = 0x44
    switch (reason) {
        case 0x44:
           printf("reason C\n"); //will be printed
    }
}

是因为原因是32位且案例都是8位吗?我应该如何标记我的案例以便32位理由有效?

0 个答案:

没有答案