Кресты / Говнокод #1209 Ссылка на оригинал

0

  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 guest, (Updated )

Комментарии (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 (емнип).
    Ответить

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

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8