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

    +178

    1. 1
    e.voiceMail = !!e.voiceMail;

    поле voiceMail имеет тип bool. Привет из солнечного кетая

    Запостил: dzagy, 25 Февраля 2011

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

    • Обычно такой прием используется для приведения int'а к 0/1.
      Ответить
    • это было нужно на старых компилерах, которые не давали гарантии что true == bool(1).
      или если bool меняется каким другим (кривым) способом.

      меня тоже как то народ на современный уровень вытянул, тыкнув в С++ стандарт где черным по белому написано что бул переменную можно сравнивать с true. тоже самое применимо к Cшному типу _Bool.
      Ответить
      • А вот не нужно булевскую переменную сравнивать с true.
        Ответить
        • А с false?
          Ответить
          • В PHP -- можно (иногда даже нужно). Делайте выводы.
            Ответить
        • я лично протестировал кучу (Юниховых) компилеров: можно сравнивать с true.
          Ответить
          • Я думаю, gegMOPO4 хотел сказать, что бессмысленно писать что-то типа: if( variable == true ). Достаточно просто if( variable ).
            Ответить
            • `== true`/`== false` в некоторых местах добавляет читабельности.
              Ответить
              • С ==false еще может быть. Но с ==true при удачном именовании сравниваемого значения - довольно сомнительно.
                Ответить
              • А if(variable == false == false) наверное вообще суперчитабельный код?
                Ответить
    • Изначально поле булево и задается везде как true/false, никаких интов туда не передается, я сначала так же подумал, только потом полез глубже
      Ответить
    • Разве в СПП не "->" вместо "."?
      Ответить
      • "->" для обращения к членам объекта через указатель;
        "." - через ссылку (в частном случае сам объект)
        Ответить
        • еще "->" - оператор, который можно перегрузить (например в смарт-поинтерах http://www.firststeps.ru/theory/c/r.php?27) - в этом случае будет вызов метода класса operator->.
          "." это доступ к полям у самого объекта - с ним ничего не сделаешь - это именно то, что написано.
          Ответить

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