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

    +73.1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    int Cparse_post::is_hex(char c)
    {
        if (strchr("0123456789abcdefABCDEF",c)!=NULL) return 1;
        return 0;
    }

    Запостил: guest, 16 Июня 2009

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

    • Валерий:
      Да... Народ библиотеки не зyает.
      isxdigit()
      Ответить
    • djmans:
      я тоже не юзаю говнобиблиоеки rtl. а сделал бы так.

      if((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')){}
      Ответить
    • Lost:
      djmans

      это еще хуже :)а так да тут стандартная сишная функция :)
      Ответить
    • ахалай-махалай:
      Отличный код! Забавный подход :-)
      Надо добавить свистелок:

      int Cparse_post::is_hex(char c)
      {
      return !(strchr("0123456789abcdefABCDEF",c) && 1);
      }


      2 djmans:
      Вы привязываетесь к конкретным кодам символов и порядку их следования в таблице. Это не очень хорошо
      Ответить
    • жуткая хуета, но смешно
      Ответить
    • 2 ахалай-махалай:

      Вроде бы стандарт гарантирует, что символы идут последовательно. Но можно было бы жаловаться, если бы было так:

      if((c >= '0' && c <= '9') || ((c = c&~32) >= 'a' && c <= 'f')){}
      Ответить
    • Great:
      >> if((c >= '0' && c <= '9') || ((c = c&~32) >= 'a' && c <= 'f')){}

      и этот говнокод лучше исходного? помилуйте..
      уж лушче strchr
      Ответить
    • "Вы привязываетесь к конкретным кодам символов и порядку их следования в таблице. Это не очень хорошо."

      А вы привязываетесь к конкретным буквам и порядку их следования в русском языке. Это тоже не очень хорошо. Перепишите.
      Ответить
    • Насчёт порядка следования букв. Обычно они действительно располагаются последовательно, но есть экзотические кодировки (с которыми обычно никто не сталкивается), в которых это не так, например EBCDIC (емнип).
      Ответить

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