На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ANDLL, ALXR
Страницы: (5) 1 [2] 3 4 ... Последняя » все  ( Перейти к последнему сообщению )  
> == 0 ИЛИ ! , C++
   
== 0 ИЛИ !
Гости не могут просматривать результаты голосования.
Гости не могут голосовать 
    Увы, но у меня и сейчас MSVS 2017 так жедает (CMP) без настроек ускорения/оптимизации. :yes-sad:
      Ну, видимо так M$ понимает понятие оптимизации. Раз нет оптимизации, значит нельзя даже мелочи оптимизировать.
        (x == 0).toString().length() == 4 :crazy:

        Добавлено
        А вообще фигня холивар. Даёшь табы vs пробелы :yes:

        Добавлено
        Цитата Славян @
        Увы, но у меня и сейчас MSVS 2017 так жедает (CMP) без настроек ускорения/оптимизации.

        У тебя странная студия. У меня она даже в дебаге test-ом сравнивает. В релизе с оптимизациями тем более.
          Цитата OpenGL @
          Даёшь табы vs пробелы

          Так уже давно холивар закрыт.

          http://intellindent.info/seriously/

          Проблема только в том, что инструментарий (IDE, редакторы) не умеют в грамотный индент табами с выравниванием пробелами, поэтому приходится деградировать до all-spaces.
            Так нечестно. Я это должен был выложить это в качестве аргумента того, что сторонники пробелов не умеют пользоваться табами :(
            Цитата Da$aD @
            Проблема только в том, что инструментарий (IDE, редакторы) не умеют в грамотный индент табами с выравниванием пробелами, поэтому приходится деградировать до all-spaces.

            Я для этого пользуюсь astyl-ом, автоматически запускаемым при сохранении файла. Он в абсолютном большинстве случаев отличает, когда надо использовать alignment, а когда - indentation - в целом меня вполне устраивает. Пример из статьи отформатировал он правильно.
              Цитата OpenGL @
              Даёшь табы vs пробелы

              Слабо. Даже
              ExpandedWrap disabled
                () {
                }

              vs
              ExpandedWrap disabled
                ()
                {
                }

              как-то, ИМХО, интереснее :)

              Добавлено
              Между тем, мнения в голосовалке разделились почти поровну. Не ожидал..
                Цитата B.V. @
                мнения в голосовалке разделились почти поровну
                Всё просто: каждой ситуации своё предпочтение. Если переменная хранит признак, то ! в самый раз, а если число, то == 0. Просто это не каждый сформулировать догадывается.
                  Цитата Qraizer @
                  Если переменная хранит признак, то ! в самый раз, а если число, то == 0.

                  Если переменная объявлена но не определена?
                  Или в условии задачи она точно определена?

                  Добавлено
                  Цитата B.V. @
                  это выбор между двумя семантиками проверки нулевого значения

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

                    Все эти "крайне" и "существенно" сильно преувеличены. Регистровые операции cmp r,i и test r,r исполняются одинаково быстро. Разница между ними в размере команды, что косвенно\теоретически может сказаться на задержке их декодирования, да и то только при при определенных "неблагоприятных обстоятельствах". Причем в х86 есть укороченный вариант команды сравнения cmp r/m,i8 с однобайтовой константой, автоматически расширяемой знаком до размера операнда. Соотв-но нормальный (не тупой) компилятор для сравнения с нулем должен использовать именно этот вариант (а не общий, когда размер константы совпадает с размером операнда). Зато cmp на современных x86 имеет преимущество перед test r,r при сравнении операнда в памяти (когда окружающий код не требует его загрузки в регистр), т.к. одна команда cmp m,i8 и декодируется, и все in-order стадии конвеера проходит быстрее, чем пара команд mov r,m + test r,r (хотя на практике разницы может и не быть, т.к. все зависит от окружающего кода, "ветра", "фаз луны" и т.д.).
                      Цитата B.V. @
                      Это не выбор между нулём и НЕ, это выбор между двумя семантиками проверки нулевого значения

                      А почему не между двумя семантиками проверки булевого значения?
                        Цитата korvin @
                        А почему не между двумя семантиками проверки булевого значения?

                        Потому что думаю, что выбор был бы слишком предсказуем: подавляющее большинство выбрало бы вариант !. А вот с численными значениями интереснее
                          Цитата korvin @
                          А почему не между двумя семантиками проверки булевого значения?
                          Булевы значения вообще не принято сравнивать. Ещё в C, где вместо них использовались целые, сравнение признака с нулём считалось плохим стилем, если не ошибкой. А сравнение с TRUE (макрос, равный единице) было именно ошибкой.
                            Цитата B.V. @
                            Слабо. Даже

                            () {
                            }

                            vs

                            ()
                            {
                            }

                            как-то, ИМХО, интереснее

                            Я выбираю первый вариант :)
                              Для сравнения числовых значений - использую "==", для булевских просто проверка или проверка с отрицанием.
                              Для форматирования C/C++ кода все ж использую JavaStyle. Для меня он кажется более компактным и лучше читаемым.
                                Цитата Polinom2686 @
                                Я выбираю первый вариант
                                А я - только второй; по-моему даже в 100% случаев. :yes:
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0461 ]   [ 18 queries used ]   [ Generated: 29.03.24, 04:44 GMT ]