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

    −49

    1. 1
    c = (c == 200) ? 0 : c + 1;	/* Increment c. */

    Запостил: govnokod3r, 14 Июня 2016

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

    • можно без c = писать: (c == MAX_NUM) ? c = 0 : ++c;
      Ответить
      • Но не нужно.
        Ответить
      • (c++ == MAX_NUM) && c = 0
        Ответить
        • Гениально!
          Ответить
          • нет. ренундантный инкремент. а вдруг увеличение больше макса это триггер для запуска skynet?

            ЗЫ в смысле, как ГК - гениален, конечно.
            Ответить
        • Но у нас же C, а не c++
          Ответить
        • только ++с, а не c++. Иначе инкремент может хоть после с=0 проскочить.
          Ответить
          • Тогда не будет такого тонкого стёба над крестами и сишкой ;(
            Ответить
            • назальные демоны смешны только первые 10 раз...
              Ответить
          • Ты так шутишь или нет? Точку следования && он не проскочит ни в Си, ни в этих ваших плюсах. Кроме того в Си (в отличие от) побочный эффект и оценка префиксного инкремента не упорядочены.
            Ответить
        • c += (c > 198) * ~c + 1;
          Ответить
          • Улучшил результат:
            c += -~((c&1&(c>>1)&1&(c>>2)&1&(c>>6)&1&(c>>7)&1)*~c);
            Ответить
      • Забыл даже более шикарную запись:
        ++c %= MAX_NUM;
        Ответить
    • В K&R не хватает заповеди:

      Thou shalt not use the ternary operator unnecessarily.
      Ответить

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