1
我有一個IP地址和子網掩碼,都在無符號長整數;我怎麼能和這兩個,並檢查我的傳入IP地址(IP2)是否屬於相同的子網?如何計算在C中的IP地址和子網掩碼的AND操作?
,如:
if (ip1 & subnet == ip2 & subnet)
then same subnet.
我有一個IP地址和子網掩碼,都在無符號長整數;我怎麼能和這兩個,並檢查我的傳入IP地址(IP2)是否屬於相同的子網?如何計算在C中的IP地址和子網掩碼的AND操作?
,如:
if (ip1 & subnet == ip2 & subnet)
then same subnet.
使用括號 - 優先級別是令人困惑:
if ((ip1 & subnet) == (ip2 & subnet))
...
原代碼是有效的一樣:
if (ip1 & (subnet == ip2) & subnet)
...
就像你做到了:
if ((ip1 & subnet) == (ip2 & subnet))
printf("same subnet 0%x", subnet);
(剛添加()以確保計算按正確的順序完成)。
一個好的編譯器應該警告這一點。如果用'-Wall'調用,GCC會這樣做。 – 2010-02-22 14:30:49
哎呀!我怎麼能錯過它.. :( – Ashish 2010-02-22 14:30:54