如果语句被跳过

时间:2015-10-20 19:57:53

标签: c pic32

在MPLAB IDE v8.92中编程时,我遇到了一个非常有趣的问题。 这只是代码的一部分,但这就是问题出现的地方:

struct data
{
  INT32 value;
};

struct data array[8] = {{0},{0},{0},{0},{0},{0},{0},{0}}; 
INT32 IOC[8];
INT32 IOD[8];


for ( byte i = 0; i<8; i++)
{
#ifdef DAC
  IOC[i] = 0;
  IOD[i] = 24;
  if(array[i].value == 0) array[i].value == 1;
#endif
}

代码构建时没有错误,当我使用ICD 3调试逐步完成这部分代码时,IOC和IOD被正确分配,但if语句被跳过!即调试器甚至没有停在它上面。任何想法可能发生了什么?

2 个答案:

答案 0 :(得分:2)

始终使用-Wall -Werror进行编译。您的声明将在编译时标记:warning: statement with no effect [-Wunused-value]

答案 1 :(得分:0)

感谢所有帮助过的人。事实证明我第一次在论坛上正确编写了代码,但在我的代码中没有更正它。我编辑了这个问题以显示错误。

  if(array[i].value == 0) array[i].value == 1;

应该是:

if(array[i].value == 0) array[i].value = 1;

猜猜这就是我整天盯着屏幕看到的XD