【发布时间】:2011-01-19 15:56:08
【问题描述】:
我有一个 IP 地址和子网掩码,都是无符号长的;我怎样才能将这两者都与并检查我的传入 ipaddress (ip2) 是否属于同一个子网?
喜欢:
if (ip1 & subnet == ip2 & subnet)
then same subnet.
【问题讨论】:
标签: c ip-address subnet
我有一个 IP 地址和子网掩码,都是无符号长的;我怎样才能将这两者都与并检查我的传入 ipaddress (ip2) 是否属于同一个子网?
喜欢:
if (ip1 & subnet == ip2 & subnet)
then same subnet.
【问题讨论】:
标签: c ip-address subnet
使用括号 - 优先级令人困惑:
if ((ip1 & subnet) == (ip2 & subnet))
...
原始代码实际上与以下代码相同:
if (ip1 & (subnet == ip2) & subnet)
...
【讨论】:
-Wall 调用,GCC 会这样做。
就像你做的那样:
if ((ip1 & subnet) == (ip2 & subnet))
printf("same subnet 0%x", subnet);
(只是添加了 () 以确保以正确的顺序完成计算)。
【讨论】: