@run182

Есть и разница между разделителями | и +?

Есть код подключения xhprof, в нем установлены параметры через +. Это тоже самое что и | или есть различия?
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY)
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
1 + 2 == 3
1 | 2 == 3

но
1 + 3 == 4
1 | 3 == 3

ибо 1 | 3 - это поразрядное ИЛИ, то есть берём в двоичной 01 и 11, и в результате ставим те разряды в 1, для которых у хотя бы одного аргумента на том же месте стоит 1, и получается снова 11 (т.е. 3 в десятичной).
ваш пример
Можете проверить значение константы как-то так: echo(XHPROF_FLAGS_CPU);
Обычно флаги задаются степенями двойки: 1, 2, 4, 8, 16 и т.д., поэтому их можно складывать через + и обычно это не является ошибкой, но по-хорошему правильнее использовать | для флагов.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@rPman
Если не укажешь дважды один и тот же флаг - то да, проблем не будет, но вы точно уверены что все используемые константы не являются составными флагами и не имеют пересечений по уставленным битам?

Так что лучше используйте надежный |
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Зависит от числового значения констант.
В данном конкретном случае разницы нет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы