如果语句被跳过
If statement is skipped
我在 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 语句被跳过!即调试器甚至不会停止。知道可能发生了什么吗?
感谢所有提供帮助的人。结果我第一次在论坛上正确地写了代码,但没有在我的代码中更正它。我编辑了问题以显示错误。
if(array[i].value == 0) array[i].value == 1;
应该是:
if(array[i].value == 0) array[i].value = 1;
猜猜这就是我整天盯着屏幕的结果 XD
始终使用 -Wall -Werror
进行编译。您的语句会在编译时被标记:warning: statement with no effect [-Wunused-value]
我在 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 语句被跳过!即调试器甚至不会停止。知道可能发生了什么吗?
感谢所有提供帮助的人。结果我第一次在论坛上正确地写了代码,但没有在我的代码中更正它。我编辑了问题以显示错误。
if(array[i].value == 0) array[i].value == 1;
应该是:
if(array[i].value == 0) array[i].value = 1;
猜猜这就是我整天盯着屏幕的结果 XD
始终使用 -Wall -Werror
进行编译。您的语句会在编译时被标记:warning: statement with no effect [-Wunused-value]