我似乎在比較一個結構的兩個成員時遇到了麻煩。 我可以在觀察窗口看到所有日誌中的序列都是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