隐含签名转换为无符号转换mplab xc8

时间:2017-06-08 11:56:38

标签: c mplab

我得到了这个,这很烦人。有人能看到错误吗?并知道如何解决它?

  

警告:(373)隐式签名到无符号转换

unsigned char read_soft_SPI(void) {
  unsigned char value = 0;
  unsigned char i = 0;
  unsigned char x = 0x80;

  SPI_SCK = 0;
  __delay_us(1);

  for (i = 0; i < 8; i++) {
    __delay_us(1);
    if (SPI_MISO == 1) {
      value = value | (x >> i);
    }
    SPI_SCK = 1;
    __delay_us(1);
    SPI_SCK = 0;

  }
  return value;
}

1 个答案:

答案 0 :(得分:0)

我刚刚遇到类似问题&#34;。 我解决了如下问题:     value =(unsigned char)(value |(x&gt;&gt; i)); 我相信基本上编译器不知道你的操作结果将保持在8位大小并且没有符号,所以它要求你指定它。

发生在我身上的一件奇怪的事情是,解决方案还不足以支持8位到16位操作:

unsigned int mul;
unsigned char a,b;
mul=(unsigned int) ((a+CONSTANT_VALUE*2/3)*b);
相关问题