1

我有一个 IP 地址和子网掩码,都是无符号长的;我怎样才能和这两者并检查我的传入 ipaddress (ip2) 是否属于同一个子网?

像:

if (ip1 & subnet == ip2 & subnet)
    then same subnet.  
4

2 回答 2

2

使用括号 - 优先级令人困惑:

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

原始代码实际上与以下代码相同:

if (ip1 & (subnet == ip2) & subnet)
    ...
于 2010-02-22T14:26:16.780 回答
1

就像你做的那样:

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

(只需添加 () 以确保以正确的顺序完成计算)。

于 2010-02-22T14:27:10.503 回答