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

    +143

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    bool flag = getFlag();
    switch (flag)
    {
    case true:
        // do something
        break;
    case false:
        // do something else
        break;
    default:
       // do something more (??!)
    }

    бывает же...

    Запостил: glook, 21 Мая 2010

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

    • блин, не заметил, в пхп такая же почти фигня тут висит... хех, не только сишники жгут!
      Ответить
    • думаю пора завести кнопочку [:IIIIIIIIIIIIIIIIIIIIIII:] на уровне с рейтингом
      Ответить
    • добавить вначале
      typedef enum { false, true, other} bool;

      и код становится осмысленным ;)))
      Ответить
      • typedef enum { false, true, хз, default } bool;

        зы: Раньше специально объявлял тип tool, имеющий значение default.
        Ответить
        • Так вот зачем им был нужен long bool:)))
          Ответить
    • в С bool типа нету.

      и даже с С++ оно не обязательно true v. false - всегда надо проверять !false v. false. потому как false == 0, а все остальные значения есть true.
      Ответить
      • В С99 есть. И если уж это действительно bool, то либо false, либо true. Третьего не дано.
        Ответить
        • _Bool в С99 это просто хак для С++ совместимости. народ требовал тип - ISO прогнулся. но в С "1 < 2" все равно есть 1, тип int.

          и как только ты начнешь конвертить char/short/int/long в bool/_Bool - без магического !! - не жди чудес.
          Ответить
          • Если верить стандарту http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf
            6.3.1.2 When any scalar value is converted to _Bool, the result is 0 if the value compares equal
            to 0; otherwise, the result is 1.
            Чудеса, да ?
            Ответить
            • и на самом деле чудеса.

              GCC 4.3.4 && aCC 06.06 оба делают как говорит стандарт.

              а Солярная СанСтудио мля еще даже толком с99 не держит... ну да это говно еще много чего не держит.
              Ответить
    • Ужас. Такое специально написать невозможно.
      Ответить
    • Трёхзначная логика )
      Ответить
    • - Сидим, пьём, а Артур Атарбекович в Лондоне важные переговоры ведёт. Если у него всё получиться, то для нас будет очень хорошо.
      Ответить

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