Кресты / Говнокод #19955 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 MaxLevs, (Updated )

Комментарии (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). Первый синус успел полежать в дабловой переменной и помялся, а второй лежал в регистре и остался чуть более точным.
        Ответить
        • хуясе. То есть значение напрямую зависит от того, где оно хранится? при этом никаких кастов, все неявно?
          Ответить
          • Совсем недавно был продемонстрирован пример, из которого выяснилось, что printf("%f",...) берёт значение не оттуда, откуда значения всех остальных аргументов берутся, а из верхушки стека сопроцессора (регистра ST(0)). В общем, плавающий питух стоит на стрёме и норовит клюнуть Царя в неожиданное место.
            Ответить
      • Я пытался примерно это объяснить, но меня не поняли.
        Ответить
        • Где ты пытался, поехавший? Тут от тебя только два коммента.
          Ответить
            • Я полковник! Я полковник! Я стану полковником! Я полковник! Я стану полковником! Я стану полковником! Я полковник! Я полковник! Я полковник! Я полковник! Я полковник! Я стану полковником! Я полковник! Я в звёздах!
              Ответить
          • Ну, во-первых, три. Во-вторых, я и не уточнял, кому объяснял, не уточнял, мой ли код. Как на счет не делать поспешных выводов?
            Ответить
            • Тут == в этом посте на момент написания моего коммента.
              А нахуя тут писать, что ты пытался объяснить, если тут ты нихуя не объяснял? Ты поехавший?
              Ответить
                • Сестра, галоперидолу этому поехавшему! У него обострение!
                  Ответить
  • А вдруг x меняется из другого потока, а может и другой программой?
    Ответить
    • А как ты изменишь локальную переменную, выделенную на стеке, из другого потока (конкретно с этим примером кода - не передавая никуда её адрес), а, тем более, из другого процесса?
      Ответить
      • > как
        Возьму да изменю. Кто мне помешает? Си же. Другой вопрос - как я найду эту переменную на стеке.
        Ответить
        • Если поместить перед ней в стеке строковую константу, то найти можно. Правда, в другом участке памяти может случайно оказаться копия этой строки.
          Ответить
        • а как ты стек найдешь? где, кстати, сохраняется контекст потока (ESP итд) когда шедулер запускает другой поток?
          Ответить
          • > где, кстати, сохраняется контекст потока
            Там же, где и все остальные регистры. Где-то внутри ядра, в структуре привязанной к каждому треду.

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

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

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


    8