链表 - 循环

时间:2011-11-21 14:00:17

标签: c

#include<stdio.h>
typedef struct hwnd *HWND;
struct hwnd{
 int id;
 HWND siblings;
 HWND next;
 HWND prev;
};
int main()
{
 HWND siblings = malloc(sizeof(struct hwnd));
 HWND handle = malloc(sizeof(struct hwnd));
 for(siblings=handle->siblings;siblings&&siblings!=siblings->next;siblings=handle->siblings)
 {
  handle->siblings = siblings->next;
  handle->siblings->prev = siblings->prev;
  siblings->prev->next = handle->siblings;
 }
 return 0;
}

此代码for循环的条件会引发deepcheck错误,如REDUNDANT_CONDITION_AFTER_FIRST_ITERATION。当条件在第二次迭代中始终为真时,会发生此错误。

请帮我解决这个问题。

修改

很抱歉,我的问题不正确。句柄 - &gt;兄弟姐妹和句柄 - &gt; next和handle-&gt; prev在程序中的某处分配了数字。我无法理解为什么他们需要做这样的兄弟姐妹&amp;&amp; amp;兄弟姐妹!=兄弟姐妹 - >接下来。我可以理解的是,他们正在检查兄弟姐妹 - &gt; next通过做兄弟姐妹和兄弟姐妹,包含一些不等于NULL的地址和兄弟姐妹。如果我错了,请纠正我。正如马诺斯所说,优先权是!=然后&amp;&amp;所以它必须正确执行而不会出现任何深度检查错误,即使我们错过了括号。

请帮我找出问题的根本原因。

1 个答案:

答案 0 :(得分:1)

也许这个siblings&&siblings不是你想要的......我也试着按照你的代码但我有点困惑。你真的想做什么?