На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ANDLL, ALXR
Страницы: (5) [1] 2 3 ... Последняя » все  ( Перейти к последнему сообщению )  
> == 0 ИЛИ ! , C++
   
== 0 ИЛИ !
Гости не могут просматривать результаты голосования.
Гости не могут голосовать 
    В продолжение темы сложного выбора. Обращаю внимание, что речь снова о C++. Примеры, надеюсь, не потребуются
      Потребуются, ибо выбора между сравнением с нулём и логическим "не" никогда не было. В плюсах, в смысле.
        Зависит от ситуации. Что понятнее, то и использую. Это не Python, издержек на сравнение с 0 нет
          Цитата negram @
          Потребуются, ибо выбора между сравнением с нулём и логическим "не" никогда не было. В плюсах, в смысле.

          Это не выбор между нулём и НЕ, это выбор между двумя семантиками проверки нулевого значения
            Когда работаешь с числами - удобнее наверное на 0 проверять. Например делитель числа.
              Цитата KILLER @
              удобнее наверное на 0 проверять

              Так наверное или удобнее? :) Сам-то что используешь и в каких ситуациях?
                Цитата B.V. @
                Так наверное или удобнее? :) Сам-то что используешь и в каких ситуациях?

                Я голоснул за восклицательный знак. Но вообще делитель я бы проверял с помощью if a == 0 togda error, с указателями и прочим юзал бы if !pointer togda error
                  Цитата KILLER @
                  Но вообще делитель я бы проверял с помощью if a == 0 togda error

                  Что-то вспомнилась картинка
                  user posted image
                    Цитата B.V. @
                    Что-то вспомнилась картинка

                    Последний вариант прокатит разве что в скриптовых языках или в каком нибудь C# с Java, а в С++ выхватишь Access Violation.
                      Цитата KILLER @
                      а в С++ выхватишь Access Violation

                      Да нет, выхватишь UB.
                        Цитата B.V. @
                        Да нет, выхватишь UB.

                        Незнаю что там на счет UB. Может в новом стандарте UB будет, помню у Страуструпа вроде было написано что деление на 0 приведет к аппаратной ошибке процессора, и соответственно обрабатывать такую ошибку нужно с помощью какого нибудь SEH исключения. Стандартные исключения ловят только программные ошибки, и надеяться на то что catch отловит деление на 0 глупая затея.

                        Добавлено
                        Хотя помню компилятор майкрософт в дебаге ловит деление на ноль. В релизе хз.
                          Только "!" использую. Ибо вещали (сильно давно), что операция CMP (асм-реализация "==0") крайне тормознутая, а "test" (в случае ! используется, бывает) существенно быстрее!
                            Цитата Славян @
                            Только "!" использую. Ибо вещали (сильно давно), что операция CMP (асм-реализация "==0") крайне тормознутая, а "test" (в случае ! используется, бывает) существенно быстрее!

                            Не представляю даже, как бы ты на явошарпах с питонами писал бы. Повесился наверное раньше :D
                              Цитата B.V. @
                              Цитата negram @
                              Потребуются, ибо выбора между сравнением с нулём и логическим "не" никогда не было. В плюсах, в смысле.

                              Это не выбор между нулём и НЕ, это выбор между двумя семантиками проверки нулевого значения

                              Не было никогда такого выбора в плюсах. Выбор мог быть только у тех, кто воспринимает плюсы как "си с классами". благо, такие уже лет 10-15 как вымерли. :-?
                                Цитата Славян @
                                Ибо вещали (сильно давно), что операция CMP (асм-реализация "==0") крайне тормознутая, а "test" (в случае ! используется, бывает) существенно быстрее!
                                Для сравнения с нулём CMP никогда не использовался. Даже в простейших компиляторах Small-C и Rat-C сравнение с нулём обрабатывалось отдельно от общего случая.
                                Так что тебе лапшу на уши вешали.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0362 ]   [ 18 queries used ]   [ Generated: 28.03.24, 20:00 GMT ]