如何计算C中的IP地址和子网掩码的AND运算?

时间:2010-02-22 14:22:18

标签: c ip-address subnet

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

像:

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

2 个答案:

答案 0 :(得分:2)

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

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

原始代码实际上与:

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

答案 1 :(得分:1)

就像你做到的那样:

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

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