我似乎在比较一个结构的两个成员时遇到了麻烦。 我可以在观察窗口看到所有日志中的序列都是0x000。在C语言中,比较一个结构的两个成员
这一个评估AllLogsNotZero为TRUE
for (i=0;(i<(3)&&(!AllLogsNotZero));i++)
{
UINT8 j;
j=i+1;
UINT16* comp1;
UINT16* comp2;
comp1 = (UINT16*) (&Data.log[i].Sequence);
comp2 = (UINT16*) (&Data.log[j].Sequence);
if ((Data.log[i].Sequence == Data.log[j].Sequence) == 0)
AllLogsNotZero=FALSE;
else
AllLogsNotZero=TRUE;
这一个评估AllLogsNotZero为FALSE
for (i=0;(i<(3)&&(!AllLogsNotZero));i++)
{
UINT8 j;
j=i+1;
UINT16* comp1;
UINT16* comp2;
comp1 = (UINT16*) (&Data.log[i].Sequence);
comp2 = (UINT16*) (&Data.log[j].Sequence);
if (Data.log[i].Sequence == Data.log[j].Sequence)
AllLogsNotZero=FALSE;
else
AllLogsNotZero=TRUE;
我不知道为什么。
由于您在比较代码中未使用“comp1”或“comp2”,因此您应该从每个片段中删除这些行(其中4个) - 这是创建MCVE([MCVE])。将您的代码写入MCVE是个好主意。使用'UINT8 j = i + 1;'来初始化变量也是值得的,而不是使用两行。 (类似的注释也适用于'comp1'和'comp2'。) –
2个循环之前'AllLogsNotZero'的初始值是多少? – chux