#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;所以它必须正确执行而不会出现任何深度检查错误,即使我们错过了括号。
请帮我找出问题的根本原因。
答案 0 :(得分:1)
也许这个siblings&&siblings
不是你想要的......我也试着按照你的代码但我有点困惑。你真的想做什么?