1

私は IP アドレスとサブネット マスクをどちらも unsigned long で持っています。これらの両方の AND を取得し、着信 IP アドレス (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 に答える