1. PHP / Говнокод #3178

    +144

    1. 1
    $x ^= $y ^= $x ^= $y

    как это выражение меняет местами значения Х и Y ?
    или что за оператор такой ^= ?

    Запостил: Phoenix123, 07 Мая 2010

    Комментарии (29) RSS

    • О работает. Я тут давеча на одном форуме встретил пост там один товарещь интересавался как выйти на разработчиков PHP с целью предложить им код функции которая меняет местами 2 переменные не используя третию. Я так думаю он их нашел. :-)
      Ответить
    • Моё мнение это не говнокод. а решение задачки олимпиады для школьников.
      Ответить
      • При этом, дурное и для частных случаев не катит.
        Ответить
        • Какие такие частные случаи ??? 2 целые циферки местами менет уже решение. это решение можно развить в скажем сортировку массива (правда зачем) но если речь идет об олимпийских задачках то вполне может быть и такая отсортировать массив не используя ни каких переменных. Это конечно дурь. Я бы даже парется не стал изобретая способ обменять 2 переменые не использую третию. Мож кому то это как флаг.
          Ответить
          • для таких частных случаев $x=1; $y=&$x;
            Ответить
            • а значение $y куда в $x ???????
              Ответить
              • эм.. в чем суть вопроса?
                Ответить
                • ну вот смотрите $x=1; $y=&$x; теперь $x==$y; при этом старое значение $y утерено задача сводится к обмену значениями. в этом случае так же можно использовать обычную конструкцию $y=$x;
                  Ответить
                  • это был пример случая этот алгоритм не отработает корректно
                    Ответить
                    • Ну Вы же стали говорить про частные случаи задачи про обмен между двумя переменными. Я потому и спросил.
                      Ответить
    • показать все, что скрытоx ^= y ^= x ^= y
      Я так делаю в С++.
      Ответить
    • А если в $x и $y не целые числа, а строки например? или же вообще разные типы.
      Ответить
      • Проксорятся и все, в чем проблема?
        Ответить
        • Чушь.

          $x = 123;
          $y = 'test';
          $x ^= $y ^= $x ^= $y;
          echo $x. '<br>'. $y ;

          на выходе: 0 и 123
          Ответить
    • Метод бредовый и подходит для определенных типов только.
      $x = 6.53;
      $y = 1.52;
      $x ^= $y ^= $x ^= $y;
      echo $x. '<br>'. $y ;
      На выходе 1 и 6 (уже целого типа).
      Ответить
    • Ксо, неужто на говнокоде реально одни школьнеги? Погуглить даже не могут...
      http://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1% 82%D0%BC_%D0%BE%D0%B1%D0%BC%D0%B5%D0%BD% D0%B0_%D0%BF%D1%80%D0%B8_%D0%BF%D0%BE%D0 %BC%D0%BE%D1%89%D0%B8_%D0%B8%D1%81%D0%BA %D0%BB%D1%8E%D1%87%D0%B0%D1%8E%D1%89%D0% B5%D0%B3%D0%BE_%D0%98%D0%9B%D0%98
      Ответить
      • и че за говнолинк? который даже не открывается
        Ответить
      • У вас кодировку распидарасило
        Ответить
      • http://ru.wikipedia.org/wiki/Алгоритм_обмена_при_помощи_исключающего_ ИЛИ
        Ответить
      • http://goo.gl/
        http://urla.ru/
        обработайте пожалуйста :D
        Ответить

    Добавить комментарий