Няшная / Говнокод #19161 Ссылка на оригинал

0

  1. 1
integerValue *= 0;

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

Запостил: besprincypniycentner besprincypniycentner, (Updated )

Комментарии (16) 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, если только между ними не вставить побочный эффект.
    Ответить
    • volatile еще можно втыкнуть чтобы не удалял даже на 02.

      Из этого кода мы узнали что:
      1) int на gcc такой же как long (movl)
      2) gcc не юзает FPO (bp)
      3) у Сомваны x64 (rbp)
      4) у нее всего одна локальная переменная (-4)
      5) Оказывается, я умею в at&t syntax)
      Ответить
  • Зато легко исправляется. Если вдруг не надо будет обнулять, достаточно изменить ноль на единичку.
    Ответить

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

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8