c语言 - 关于未遵循"if"的声明



我正在用dsPIC做一点C编程,我发现了一个小问题,我不知道为什么或如何发生。MPLAB编译器C30

我有这样的代码:

int Function1(){
.
.
.
while(1){
.
.
.
P1 = EPC96_1[18];  //Here the value of P1 = 0xB6
P2 = EPC96_1[19];
CRC_CCITT(EPC96_2, 18);   //in this function CRC_1 is calculated also CRC2
if(P1 != CRC_1){       //In the calculation of CRC_1 it comes always 0xB6
  P1++;                //Both values P1 and CRC1 are the same, stil it 
  if(P2 != CRC_2)      //comes here and continues with the break
    break;
  }
}
return 1;
}
//end of my function, return to main code

----对不起,我没有指定,它应该不会出现在if中,!=应该是这样的,因为我想让程序做的是当两个变量相等时,它应该返回到while(1)开始----

我查找了MPLAB(8.92)手表上的变量,它们是相同的。我不认为问题是在代码之前或之后或在任何其他地方,但我可能是错的。在你的体验时间里,有人发现了同样的问题吗?

感谢您的宝贵时间。

P1CRC_1int变量

根据代码中的注释,两个变量的值都是0xB6if -语句检查不相等(!=),而不检查相等(==),因此它将跳过块。

我建议在if -语句之前和/或内部插入printf() -语句来输出两个变量的值。它们中的任何一个都可能包含意外值。

printf("P1=%d, CRC_1=%dn", P1, CRC_1);

变量的数据类型未知。P1, P2, EPC96_1, CRC_1, CRC_2是什么数据类型?变量在哪里定义?CR_CCCITT()是做什么的函数?

相关内容

  • 没有找到相关文章

最新更新