IPaddress와 서브넷 마스크가 모두 부호없는 long에 있습니다. 어떻게 둘 다 내가 들어오는 ipaddress (ip2)가 같은 서브넷에 속하는지 여부를 확인할 수 있습니까?C에서 IPaddress와 서브넷 마스크의 AND 연산을 계산하는 방법은 무엇입니까?
같은 :
if (ip1 & subnet == ip2 & subnet)
then same subnet.
IPaddress와 서브넷 마스크가 모두 부호없는 long에 있습니다. 어떻게 둘 다 내가 들어오는 ipaddress (ip2)가 같은 서브넷에 속하는지 여부를 확인할 수 있습니까?C에서 IPaddress와 서브넷 마스크의 AND 연산을 계산하는 방법은 무엇입니까?
같은 :
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);
(방금 계산을 올바른 순서로 수행하도록()가 추가되었습니다).
좋은 컴파일러가 이에 대해 경고해야합니다. '-Wall'로 호출하면 GCC가 작동합니다. –
죄송합니다. 어떻게 내가 그것을 놓칠 수 있습니다 .. :( – Ashish