1. Си / Говнокод #19905

    −46

    1. 1
    2. 2
    3. 3
    4. 4
    if ((uint8)(len = *tpl++)>247)
                len = ((uint8)len&7)<<8|*tpl++;
            if (((tagattr && pval && taglen && ((tagattr&tattrZeroTerminated)?(*pval/*strlen(pval)*/!=0):((tag == 0x5F34)?(*pval != 0xFF):(*pval||taglen>1&&memcmp(pval,pval+1,taglen-1)))))?1:0) ^ (ch==2?1:0))
                tpl += len;

    уже три года работает безошибочно

    Запостил: peanutwolf, 29 Апреля 2016

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

    • Отрефакторил.
      len = *tpl++;
      if ((uint8)len > 247)
      {
          len = ((uint8)len & 7) << 8 | *tpl++;
      }
      
      if (((
              tagattr &&
              pval &&
              taglen &&
                  (
                      (tagattr & tattrZeroTerminated) ?
                      (*pval != 0) :
                      (
                          (tag == 0x5F34) ?
                          (*pval != 0xFF) :
                          (*pval || taglen > 1 && memcmp(pval, pval + 1, taglen - 1) )
                      )
                  )
          ) ? 1 : 0) ^ (ch == 2 ? 1 : 0)
         )
      {
          tpl += len;
      }
      Ответить
    • Потому что никто не понимает, что именно он делает?
      Ответить
    • Напоминает баян:
      for(;P("\n"),R-;P("|"))for(e=C;e-;P("_"+(*u++/8)%2))P("| "+(*u/4)%2);
      Ответить
    • > tagattr&tattrZeroTerminated

      Предлагаю имена переменных составлять только из букв b, d, f, t, h, m, n, r.
      Ответить

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