c - 未遵循 "if"上的语句

标签 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(8.92)的Watch上查找了变量,它们是相同的。我不认为问题出在代码之前或之后或任何其他地方,但我可能是错的。 在您的体验过程中有人发现同样的问题吗?

感谢您的宝贵时间。

最佳答案

假设P1CRC_1int变量。

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

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

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

关于c - 未遵循 "if"上的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38013416/

相关文章:

c - fprintf 对时间戳计数器有奇怪的影响

c - Valgrind 向 malloc 报告愚蠢的 arg,我如何找出位置?

android - AlertDialog EditText 输入验证不起作用

linux - Linux 脚本中 if 表达式中的 -z 值是什么意思?

C++ - 否则返回 Elseif

c - 如何编译/创建使用 c 的 ruby​​ 扩展?

microcontroller - 具有32MX4入门指南的MRF24WB0MA WiFi

c - 需要转换数据(字节值转换为十六进制,十六进制字符转换为ASCII字符)

java - 是什么导致 Java 库在被 JRuby 调用时表现不同?

c - Socket编程C【发送消息给选定的客户端】