Microchip XC8,奇怪的标志警告

时间:2017-09-06 09:00:55

标签: warnings unsigned signed xc8

我正在使用Microchip XC8,我感到有点困惑。 我有那个代码:

void fastBinaryToBCD(unsigned short int n, unsigned char mem){
// AppNote www.cypress.com/file/42131
unsigned char d4, d3, d2, d1, d0, q;    // d4-d0 - decimal numbers

d0 = n & 0xF;
d1 = (n>>4u) & 0xF;
d2 = (n>>8u) & 0xF;
d3 = (n>>12u) & 0xF;
d0 = 6u * (d3 + d2 + d1) + d0; //<------------warning
q = d0 / 10u;
d0 = d0 % 10u;
d1 = q + 9u*d3 + 5u*d2 + d1;
//...
}

我收到警告:

warning: (373) implicit signed to unsigned conversion

我认为默认情况下所有文字都是签名的,所以我把所有文字都放了。除了我指出的那条线外,它无处不在。 什么也没有产生非警告结果:

d0 = (unsinged char)(6u * (d3 + d2 + d1) + d0);

警告仍然存在。

这条线上发生了什么? :d

祝你好运!

1 个答案:

答案 0 :(得分:0)

Sometines xc8在显示警告时有些棘手。 文字0x0F已签名,因此请尝试:

d0 = n & 0xFu;
d1 = (n>>4u) & 0xFu;
d2 = (n>>8u) & 0xFu;
d3 = (n>>12u) & 0xFu;