1. C++ / Говнокод #481

    +154.3

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    double a, b;
    
    ...
    
     *((DWORD*)&a) ^= *((DWORD*)&b);
     *((DWORD*)&b) ^= *((DWORD*)&a);
     *((DWORD*)&a) ^= *((DWORD*)&b);
     *((DWORD*)&a + 1) ^= *((DWORD*)&b + 1);
     *((DWORD*)&b + 1) ^= *((DWORD*)&a + 1);
     *((DWORD*)&a + 1) ^= *((DWORD*)&b + 1);

    Cпособ обменять значения двух переменных типа double;

    Запостил: guest, 30 Января 2009

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

    • 1:
      omg
      Ответить
    • UB
      Ответить
    • cha0s:
      Есть старый способ же:
      b+=a;
      a-=b;
      b+=a;
      a=-a;
      Ответить
    • работает же :-)
      Ответить
    • *((DWORD*)&a) ^= *((DWORD*)&b);
      *((DWORD*)&b) ^= *((DWORD*)&a);

      Гы, кто-то где-то услышал что с ^ быстрее.

      а
      b+=a;
      a-=b;
      b+=a;
      a=-a;

      ведет к потере точности.
      Ответить
    • Rh:
      cha0s, старый способ тож попахивает имхо... Мне такое вот показали:
      х+=у;
      у=х-у;
      х-=у;
      Ответить

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