2011-11-21 44 views
-5
#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循環條件引發深度檢查錯誤爲REDUNDANT_CONDITION_AFTER_FIRST_ITERATION。當第二次迭代中的條件始終爲真時,會發生此錯誤。鏈接列表 - 圓形

請幫我解決這個問題。

編輯:

對不起我的問題不是correct.The把手型>兄弟姐妹和把手型>接下來與程序中某個位置的數字把手型>分組進行分配。我不明白他們爲什麼需要像這樣的兄弟姐妹做一個檢查& &兄弟姐妹!=兄弟姐妹 - >下一個。我所能理解的是,他們正在檢查兄弟姐妹 - >下一步包含一些地址和兄弟姐妹,通過做兄弟姐妹& &兄弟姐妹不等於NULL。如果我錯了,請糾正我。正如manos所說的,優先級是!=然後是& &,所以它必須正確執行,沒有任何深度檢查錯誤,即使我們錯過了放置括號。

請幫我看看可能是什麼問題的根源。

+0

由於你的例子中的循環根本不會運行('兄弟姐妹'將始終是'NULL')我很難知道你從哪裏得到錯誤。 –

回答

1

也許這siblings&&siblings是不是你想要的......我也想跟着你的代碼,但我有點困惑。你真的想做什麼?

+0

我想他/她正在嘗試做兄弟姐妹&&(兄弟姐妹!=兄弟姐妹 - >下一個) – holgac

+0

是的優先級是!=,&&,||所以沒有括號與你的猜測是一樣的。但仍然無法弄清楚他/她想做什麼。 – Manos