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

    +14

    1. 1
    integerValue *= 0;

    не обнулил, а на ноль умножил

    Запостил: besprincypniycentner, 09 Декабря 2015

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

    • struct IntegerValue {
      void operator *=(int x) {
        cout << "Hello world" << endl;
      }
      } integerValue;
      Ответить
    • Кстати, GCC это оптимизирует.

      int i = 5;
      i *= 0;


      с дефолтными флагами превращается в

      movl	$5, -4(%rbp)
      movl	$0, -4(%rbp)


      А с -O2 он вообще сразу присваивает 0 xor'ом и игнорирует 5, если только между ними не вставить побочный эффект.
      Ответить
      • Да любой нормальный компилятор это оптимизирует.
        Ответить
    • Зато легко исправляется. Если вдруг не надо будет обнулять, достаточно изменить ноль на единичку.
      Ответить
    • Он перепутал - прально
      integerValue = *0;
      Ответить

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