1. C# / Говнокод #16123

    +104

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    public bool EqualsToZero(int a){
     try {
      var b=100/a;
      return false;
     }
     catch{
      return true;
     }
    }

    Why not?

    Запостил: alexCoder2007, 06 Июня 2014

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

    • А сначала я не обратил внимания на то, что аргумент - целое; с флоатом было бы эпичней.
      Ответить
    • cmp a, 0
      je returntrue
      Ответить
      • returntrue:
        xor eax, eax
        Ответить
      • FYI, clang сделал так (-O2 -fomit-frame-pointer):
        0000000000000000 <equals_to_zero>:
           0:   85 ff                   test   edi,edi
           2:   0f 95 c0                setne  al
           5:   c3                      ret
        Ответить
        • Само собой, трюк-то классический. Нет никакого резона сравнивать с константой.
          Ответить
    • шарпик теперь асм генерит вместо байт-кода сразу?
      Ответить
    • К сожалению, подобное я часто встречаю даже в Enterprise-коде, распространяемом за несмешные деньги.
      Ответить
      • > даже в Enterprise-коде
        Хе-хе-хе. Я, конечно, могу ошибаться, но в энтерпрайзе поди 90% подобного кода ;)
        Ответить

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