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

    +184

    1. 1
    enum Bool {True = 0, False = (!True)};

    Автор: Константин с trinity-core.ru

    Запостил: chaoswithin, 15 Августа 2011

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

    • Пиар-менеджер: chaoswithin с govnokod.ru
      Ответить
    • Тру, не тру.
      Ответить
    • chaoswithin, а история не умалчивает, ЗАЧЕМ?
      Ответить
    • и? хуита детектед
      Ответить
    • так вот почему перадки wow такие глючные...
      Ответить
    • кому-то очень не хватает настоящего булевого типа в С++, как, например, в джаве....
      Ответить
    • enum Bool {True = 0, NotTrue = (!True)};
      Ответить
    • Этот код был приведен в качестве примера там, что так тоже можно, и что можно таким образом вернуть несколько ложных значений.
      Ответить
    • False=(!True) тут нужен чтоб менять местами 0 и 1 одной правкой, а не двумя. Устанавливаешь True, а False автоматически получается наоборот.
      Ответить
      • А ну тогда конечно! Если законы логики вдруг изменятся программу править придётся всего в одном месте )
        Ответить
        • Не законы логики, а представление True и False на конкретной платформе.

          Некоторые конкретные реализации языков программирования используют в качестве True единицу, некоторые — байт или машинное слово, все биты которого установлены (если это слово интерпретировать как знаковое число, то его значение равно минус единице). В обоих случаях False = 0, а True получается инверсией, просто в первом представление логического типа однобитное, а во втором — выровнено по размеру байта/слова.
          Ответить
          • Где здесь некоторые конкретные реализации языков программирования, inkanus-gray?
            Ответить
    • Ток вчера отчитывался)))Ваха
      Ответить
    • А где FileNotFound?
      Ответить
    • http://trinity-core.ru/showthread.php?t=6553
      Прикольно. Раздел переменные. №2
      Ответить
    • >Передача в функцию
      >При передаче параметров в функции
      >учитывайте такой факт:
      >
      >int Test(int a) {return a*a}
      >
      >так вот если ее вызвать таким образом >Test(5+1);
      >
      >то многие компиляторы посчитают >результат как 5+1*5+1 и получится 11
      >
      >Исправить можно так:
      >int Test(int a) {return (a)*(a)}
      >а еще лучше так:
      >int Test(int a) {return ((a)*(a))}
      ---
      Вот этого нихера не понял
      Ответить
      • Дык гонево же. Автор этих строк мудила и путает макросы с функциями. Хитрости C++, блеать.
        Ответить
        • Конечно, говнево. Автор того треда очень умный и, главное, как он не раз подмечал, начитанный.
          Азбуку он что ли читал.
          Хорошо хоть он не любитель троллить и попросил закрыть тред.
          Ответить
        • >Логические типы по той логике, что в некоторых языках вообще нет типа bool и создать его можно ТОЛЬКО через перечисления, и еще по той логике, что когда у тебя большое условие то завернуть его в скобки и поставить снаружи отрицание только запутает тебя...
          Бля он мне мозг выносит :D
          Ответить
        • Да хули, автор ничего серьезнее хеллоуворлдов не писал, а уже лезет делиться "хитростями".
          Ответить

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