私は IP アドレスとサブネット マスクをどちらも unsigned long で持っています。これらの両方の AND を取得し、着信 IP アドレス (ip2) が同じサブネットに属しているかどうかを確認するにはどうすればよいですか?
お気に入り:
if (ip1 & subnet == ip2 & subnet)
then same subnet.
私は IP アドレスとサブネット マスクをどちらも unsigned long で持っています。これらの両方の AND を取得し、着信 IP アドレス (ip2) が同じサブネットに属しているかどうかを確認するにはどうすればよいですか?
お気に入り:
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);
(計算が正しい順序で行われるように () を追加しただけです)。