Сообщение Re[29]: Carbon от 22.04.2024 10:21
Изменено 22.04.2024 12:01 vdimas
Re[29]: Carbon
Здравствуйте, Sinclair, Вы писали:
S>Следите за руками: в дотнете прибавление единицы к int 0x7FFFFFFF даёт int 0x80000000 (overflows are ignored). Здесь нет никаких бит для отбрасывания, т.к. весь результат fits in the destination type.
S>А в C++ такое прибавление даёт undefined behavior.
Продолжаешь пытаться показывать фокусы? ))
Если в этот же код подать другое число, то может быть отбрасывание.
========
Это даже уже не фокус у тебя, это мошенничество в расчёте на однобитную тусовку, один завсегдатай уже отметился.
Тебе же уже говорилось, что промежуточные вычисления в более широких типах допустимы прямо по стандарту.
И раздражает твоё непонимание понятия UB.
UB не означает ошибку, UB означает неопределённое поведение.
Т.е. вот у тебя в формуле встречается участок (a+b)/2, в котором может наступить переполнение и выдача ошибочного результата.
Разумеется, до факта переполнения формула остаётся работоспособной.
А после переполнения — неопределено, т.е. может остаться работоспособной, а может и не остаться.
На этот эффект ты и нарвался в своём примере.
И что ты рядом бил себя в грудь, что в дотнете формула достоверно будет неработоспособной — это потому что дотнет пока мест всё еще детская игрушка.
Займутся им всёрьез — будет так же.
И значешь почему?
Потому что принципиально современные разрабы-оптимизаторы кучкуются только в С++, и других взять тупо неоткуда. ))
Собсно, уже в дотнет нагнали плюсовиков и те стали приводить сие полумёртвое поделие в норму.
S>Следите за руками: в дотнете прибавление единицы к int 0x7FFFFFFF даёт int 0x80000000 (overflows are ignored). Здесь нет никаких бит для отбрасывания, т.к. весь результат fits in the destination type.
S>А в C++ такое прибавление даёт undefined behavior.
Продолжаешь пытаться показывать фокусы? ))
Если в этот же код подать другое число, то может быть отбрасывание.
========
Это даже уже не фокус у тебя, это мошенничество в расчёте на однобитную тусовку, один завсегдатай уже отметился.
Тебе же уже говорилось, что промежуточные вычисления в более широких типах допустимы прямо по стандарту.
И раздражает твоё непонимание понятия UB.
UB не означает ошибку, UB означает неопределённое поведение.
Т.е. вот у тебя в формуле встречается участок (a+b)/2, в котором может наступить переполнение и выдача ошибочного результата.
Разумеется, до факта переполнения формула остаётся работоспособной.
А после переполнения — неопределено, т.е. может остаться работоспособной, а может и не остаться.
На этот эффект ты и нарвался в своём примере.
И что ты рядом бил себя в грудь, что в дотнете формула достоверно будет неработоспособной — это потому что дотнет пока мест всё еще детская игрушка.
Займутся им всёрьез — будет так же.
И значешь почему?
Потому что принципиально современные разрабы-оптимизаторы кучкуются только в С++, и других взять тупо неоткуда. ))
Собсно, уже в дотнет нагнали плюсовиков и те стали приводить сие полумёртвое поделие в норму.
Re[29]: Carbon
Здравствуйте, Sinclair, Вы писали:
S>Следите за руками: в дотнете прибавление единицы к int 0x7FFFFFFF даёт int 0x80000000 (overflows are ignored). Здесь нет никаких бит для отбрасывания, т.к. весь результат fits in the destination type.
S>А в C++ такое прибавление даёт undefined behavior.
Продолжаешь пытаться показывать фокусы? ))
Если в этот же код подать другое число, то может быть отбрасывание.
========
Это даже уже не фокус у тебя, это мошенничество в расчёте на однобитную тусовку, один завсегдатай уже отметился.
Тебе же уже говорилось, что промежуточные вычисления в более широких типах допустимы прямо по стандарту.
И раздражает твоё непонимание понятия UB.
UB не означает ошибку, UB означает неопределённое поведение в случае ошибки.
Т.е. вот у тебя в формуле встречается участок (a+b)/2, в котором может наступить переполнение и выдача ошибочного результата.
Разумеется, до факта переполнения формула остаётся работоспособной.
А после переполнения — неопределено, т.е. может остаться работоспособной, а может и не остаться.
На этот эффект ты и нарвался в своём примере.
И что ты рядом бил себя в грудь, что в дотнете формула достоверно будет неработоспособной — это потому что дотнет пока мест всё еще детская игрушка.
Займутся им всёрьез — будет так же.
И значешь почему?
Потому что принципиально современные разрабы-оптимизаторы кучкуются только в С++, и других взять тупо неоткуда. ))
Собсно, уже в дотнет нагнали плюсовиков и те стали приводить сие полумёртвое поделие в норму.
S>Следите за руками: в дотнете прибавление единицы к int 0x7FFFFFFF даёт int 0x80000000 (overflows are ignored). Здесь нет никаких бит для отбрасывания, т.к. весь результат fits in the destination type.
S>А в C++ такое прибавление даёт undefined behavior.
Продолжаешь пытаться показывать фокусы? ))
Если в этот же код подать другое число, то может быть отбрасывание.
========
Это даже уже не фокус у тебя, это мошенничество в расчёте на однобитную тусовку, один завсегдатай уже отметился.
Тебе же уже говорилось, что промежуточные вычисления в более широких типах допустимы прямо по стандарту.
И раздражает твоё непонимание понятия UB.
UB не означает ошибку, UB означает неопределённое поведение в случае ошибки.
Т.е. вот у тебя в формуле встречается участок (a+b)/2, в котором может наступить переполнение и выдача ошибочного результата.
Разумеется, до факта переполнения формула остаётся работоспособной.
А после переполнения — неопределено, т.е. может остаться работоспособной, а может и не остаться.
На этот эффект ты и нарвался в своём примере.
И что ты рядом бил себя в грудь, что в дотнете формула достоверно будет неработоспособной — это потому что дотнет пока мест всё еще детская игрушка.
Займутся им всёрьез — будет так же.
И значешь почему?
Потому что принципиально современные разрабы-оптимизаторы кучкуются только в С++, и других взять тупо неоткуда. ))
Собсно, уже в дотнет нагнали плюсовиков и те стали приводить сие полумёртвое поделие в норму.