Оператор IF и логическое AND

cyborg

Новичок
Оператор IF и логическое AND

Подскажите, что не так делаю?

Так не работает правильно:
PHP:
if($sms_typ&0x0c == 0x00) echo '<br /> - Текстовые отчеты';
if($sms_typ&0x0c == 0x04) echo '<br /> - Нетекстовые отчеты (приходят только если в трубе есть галка "вкл отчеты")';
if($sms_typ&0x0c == 0x08) echo '<br /> - Текстовые отчеты';
if($sms_typ&0x0c == 0x0c) echo '<br /> - Нетекстовые отчеты (приходят в независимо от состояния галки "отчеты" в трубе)';
однако, если вынести логическую операцию в отдельный оператор, то все работает

PHP:
$rep = $sms_typ&0x0c;

if($rep == 0x00) echo '<br /> - Текстовые отчеты';
if($rep == 0x04) echo '<br /> - Нетекстовые отчеты (приходят только если в трубе есть галка "вкл отчеты")';
if($rep == 0x08) echo '<br /> - Текстовые отчеты';
if($rep == 0x0c) echo '<br /> - Нетекстовые отчеты (приходят в независимо от состояния галки "отчеты" в трубе)';
 

cyborg

Новичок
filipchuk
ну пусть побитовая, ошибся, все равно пока она внутри условия не работает
 

cyborg

Новичок
Андрейка
например, когда $sms_typ=1537 в первом случае получается срабатывает условие $sms_typ&0x0c == 0x0c, а во втором как надо - $rep == 0x00
 

cyborg

Новичок
понял, спасибо всем

-~{}~ 26.07.07 12:38:

вообще думал, что наоборот самый низкий у сравнения приоритет
 

cyborg

Новичок
судя по доке от svetasmirnova у сравнения выше приоритет над обеими (сравнение выше находится)
 

kruglov

Новичок
Beavis
Ого, оптимизация? Выигрыш в производительности? Экономия на оборудовании?
 

michelle

Новичок
Автор оригинала: kruglov
Beavis
Ого, оптимизация? Выигрыш в производительности? Экономия на оборудовании?
На здравом смысле!!!!! :confused:

Туча if нечитабельны по сравнению с одним switch! :)
 

michelle

Новичок
Да хоть два - все равно они будут нечитаемы по сравнению со switch!
 

kruglov

Новичок
не спорю, но лишний перфекционизм - плохо, а switch слишком негибок. Понадобится один из if-ов усложнить, вставить || или && - нет проблем. А switch - переписывай весь на ifы?

-~{}~ 26.07.07 15:47:

switch - это пережиток C, с его оптимизацией на ассемблерную скорость.
 

StUV

Rotaredom
но лишний перфекционизм - плохо, а switch слишком негибок
код должен делать то что должен
не более того
если в каждой строке скрипта задумываться о всех возможных расширениях - ты такой скрипт никогда не допишешь

зы: но это уже полный офф... =)
 
Сверху