我正在使用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
我要求默认情况下所有文字都签署,所以我将所有u放置。除了我指出的那条线,它到处都可以使用。什么也没有产生非警告结果是:
d0 = (unsinged char)(6u * (d3 + d2 + d1) + d0);
警告保留。
这条线发生了什么?:D
最好的问候!
有些人在警告中有点棘手。字面的0x0F
已签名,请尝试:
d0 = n & 0xFu;
d1 = (n>>4u) & 0xFu;
d2 = (n>>8u) & 0xFu;
d3 = (n>>12u) & 0xFu;