2010-02-22 2 views

ответ

2

Используйте скобки - приоритет уровни запутанные:

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

Исходный код был фактически таким же, как:

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

Хороший компилятор должен предупредить об этом. GCC делает, если вызывается с '-Wall'. –

+0

упс! как я могу это пропустить .. :( – Ashish

1

Так же, как вы это сделали :

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

(только что добавил(), чтобы гарантировать, что вычисление выполняется в правильном порядке).

Смежные вопросы