关于“如果”没有遵循的声明

时间:2016-06-24 12:25:17

标签: c if-statement mplab dspic

我正在使用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 Watch(8.92)上的变量,它们是相同的。我不认为问题出现在代码之前或之后或任何其他地方,但我可能是错的。 有没有人在你的经历中发现同样的问题?

感谢您的时间。

2 个答案:

答案 0 :(得分:1)

假设P1CRC_1int变量。

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

我建议插入printf() - 语句,以便在if - 语句之前和/或之内输出两个变量的值。可能是其中任何一个都有意想不到的值。

printf("P1=%d, CRC_1=%d\n", P1, CRC_1);

答案 1 :(得分:0)

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

相关问题