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

    −18

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    #include <iostream>
    #include <conio>
    using namespace std;
    template <class T> bool de(T x);
    int main(){
    double x;
    double mas[1];
    mas[0] = x;
    cout << de(x) << endl;
    cout << (x/x == x/x);
    _getch();
    }
    template <class T> bool de(T x){
    if((x/x == x/x) == false)
    if((&x == &x) == true)
    return true;
    return false;
    }

    Я окончательно потерял смысл жизни..

    Запостил: MaxLevs, 07 Мая 2016

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

    • > потерял смысл жизни
      И отступы.
      Ответить
      • А уж ЭТО я решил даже не пытаться искать..
        Ответить
    • Я угадаю этот компилятор с одной строчки.
      Ответить
    • #include <iostream>
      #include <conio>
      
      using namespace std;
      
      template <class T> bool de(T x);
      
      int main()
      {
          double x;
          double mas[1];
          mas[0] = x;
          cout << de(x) << endl;
          cout << (x/x == x/x);
          _getch();
      }
      
      template <class T> bool de(T x)
      {
          if((x/x == x/x) == false)
              if((&x == &x) == true)
                  return true;
          return false;
      }

      А где смеяться?
      PS, "mas[0] = x;" - UB.
      Ответить
      • Я бы написал так:
        template <class T> bool de(T x)
        {
            return (x/x != x/x) && (&x == &x);
        }
        Хотя всё равно смысл этой магической конструкции от меня ускользает.
        Ответить
        • > смысл этой магической конструкции
          Да поди как я когда-то кидал sin(x) != sin(x). Первый синус успел полежать в дабловой переменной и помялся, а второй лежал в регистре и остался чуть более точным.
          Ответить
          • В регистре поди 80-битное значение лежало, а в дабле 64 бита?
            Ответить
          • хуясе. То есть значение напрямую зависит от того, где оно хранится? при этом никаких кастов, все неявно?
            Ответить
            • Совсем недавно был продемонстрирован пример, из которого выяснилось, что printf("%f",...) берёт значение не оттуда, откуда значения всех остальных аргументов берутся, а из верхушки стека сопроцессора (регистра ST(0)). В общем, плавающий питух стоит на стрёме и норовит клюнуть Царя в неожиданное место.
              Ответить
              • не, там все проще

                https://ideone.com/uaB8Vd
                Ответить
                • NaN бывает ещё и со знаком? А что означает знак у нечисла?
                  Ответить
                • Собсна: https://ideone.com/lLSEiJ
                  Правда, непонятно, почему -nan.
                  Ответить
          • Так это же пиздец!

            Код в студию, плиз.
            Ответить
          • Пришли плиз код.
            Ответить
            • Надо поискать, но там было что-то банальное в духе a = sin(x), b = sin(x) и их сравнение.
              Ответить
              • Дарю: http://govnokod.ru/12138
                Ответить
                • > 3_dar 07.05.2016 22:36 # +1
                  Так это же пиздец!

                  > 3_dar 17 часов назад # 0
                  Пришли плиз код.


                  Меня нюанс восхитил: человек джва (!) года ждал такой код.
                  Ответить
        • Я пытался примерно это объяснить, но меня не поняли.
          Ответить
          • Где ты пытался, поехавший? Тут от тебя только два коммента.
            Ответить
            • он поехваший?
              а ты, выходит, братишка?
              Ответить
              • Я полковник! Я полковник! Я стану полковником! Я полковник! Я стану полковником! Я стану полковником! Я полковник! Я полковник! Я полковник! Я полковник! Я полковник! Я стану полковником! Я полковник! Я в звёздах!
                Ответить
            • Ну, во-первых, три. Во-вторых, я и не уточнял, кому объяснял, не уточнял, мой ли код. Как на счет не делать поспешных выводов?
              Ответить
              • Тут == в этом посте на момент написания моего коммента.
                А нахуя тут писать, что ты пытался объяснить, если тут ты нихуя не объяснял? Ты поехавший?
                Ответить
                • А нифига! Я объясняю, что объяснял) ЛАГично?
                  Ответить
                  • Сестра, галоперидолу этому поехавшему! У него обострение!
                    Ответить
      • > "mas[0] = x;" - UB.
        Чому?
        Ответить
    • А вдруг x меняется из другого потока, а может и другой программой?
      Ответить
      • А как ты изменишь локальную переменную, выделенную на стеке, из другого потока (конкретно с этим примером кода - не передавая никуда её адрес), а, тем более, из другого процесса?
        Ответить
        • > как
          Возьму да изменю. Кто мне помешает? Си же. Другой вопрос - как я найду эту переменную на стеке.
          Ответить
          • Если поместить перед ней в стеке строковую константу, то найти можно. Правда, в другом участке памяти может случайно оказаться копия этой строки.
            Ответить
            • тогда поломаем все, что бы не ошибиться
              Ответить
          • а как ты стек найдешь? где, кстати, сохраняется контекст потока (ESP итд) когда шедулер запускает другой поток?
            Ответить
            • > где, кстати, сохраняется контекст потока
              Там же, где и все остальные регистры. Где-то внутри ядра, в структуре привязанной к каждому треду.

              > а как ты стек найдешь
              Навскидку - отладочные API операционок вроде дают возможность получить/поправить регистры нужного треда.
              Ответить

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