2010-02-22 68 views

回答

2

使用括號 - 優先級別是令人困惑:

if ((ip1 & subnet) == (ip2 & subnet)) 
    ... 

原代碼是有效的一樣:

if (ip1 & (subnet == ip2) & subnet) 
    ... 
+0

一個好的編譯器應該警告這一點。如果用'-Wall'調用,GCC會這樣做。 – 2010-02-22 14:30:49

+0

哎呀!我怎麼能錯過它.. :( – Ashish 2010-02-22 14:30:54

1

就像你做到了:

if ((ip1 & subnet) == (ip2 & subnet)) 
    printf("same subnet 0%x", subnet); 

(剛添加()以確保計算按正確的順序完成)。