На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (4) « Первая ... 2 3 [4]  все  ( Перейти к последнему сообщению )  
> bool vs BOOL
    Помню я на форуме С++ создавал тему про ошибку. Создал консолньый проект, там сделал класс, перенес код в ГУИ, а там все заглючило.
    Ошибка была вот в чем:
    ExpandedWrap disabled
      typedef char BOOL; // в консольном проекте не подключал windows.h он был не нужен


    Когда я узнал, что Microsoft сделал BOOL int'ом - я был в шоке. За такое разработчиков надо кастрировать или оторвать пальцы.
      Цитата Red Devil @
      Когда я узнал, что Microsoft сделал BOOL int'ом - я был в шоке. За такое разработчиков надо кастрировать или оторвать пальцы.

      Это из-за размера? Тогда огорчу, 1-байтная переменная на современных 32-битных процессорах ведет к уменьшению производительности.
      Сообщение отредактировано: Evil J -
        Цитата
        Когда я узнал, что Microsoft сделал BOOL int'ом - я был в шоке. За такое разработчиков надо кастрировать или оторвать пальцы.

        Вообще то размер bool Стандартом не специфицирован, поэтому мы имеем то что имеем. Каждый производитель компиляторов волен тут делать всё, что захочет, поэтому - без фанатизма пожалуйста.

        Цитата
        Это из-за размера? Тогда огорчу, 1-байтная переменная на современных 32-битных процессорах ведет к уменьшению производительности.

        ну да, если не рассматривать такой момент, что этот самый int ещё и хранить где то нужно (ну, давайте к примеру сравним объёмы 1000000 int-ов и bool :) ), то быстрее :). Если рассматривать ТОЛЬКО обращение к переменной - то быстрее.

        +компиль на самом деле может так хитро съоптимизировать, что никаких переменных создаваться вообще не будет, так что не знаю, не знаю... мне bool вообще приятнее.
        Сообщение отредактировано: BugHunter -
          Цитата BugHunter @
          так что не знаю, не знаю... мне bool вообще приятнее.

          :yes: но если он станет 4-х байтным, то я не огорчусь.
          приятней он мне т.к. он стандартный :P
            Странно, что вы высчитываете байты... помоему самая большая проблема в выборе между BOOL и bool:

            ExpandedWrap disabled
              int IsObjectValid()
              {
                return -1; // Например Object is invalid!
              }
              BOOL IsValid()
              {
                return IsObjectValid();
              }
              int main()
              {
                if( IsValid() == TRUE )
                  .... // Ошибка
              }
            Сообщение отредактировано: MOHAX -
              Цитата MOHAX @
              Странно, что вы высчитываете байты... помоему самая большая проблема в выборе между BOOL и bool:

              А в чем ты тут видишь проблему?
                Цитата MOHAX @
                помоему самая большая проблема в выборе между BOOL и bool
                Эта проблема называется "использование магических чисел" и "неявные преобразования".
                  Нельзя сравнивать переменную типа BOOL со значениями TRUE и FALSE.
                  Т.е. как в приведенном выше примере:

                  ExpandedWrap disabled
                    if( IsValid() == TRUE )
                    {
                     // Этот код никогда не выполнится
                    }
                    if( IsValid() == FALSE )
                    {
                     // И этот код тоже никогда не выполнится
                    }

                  Именно поэтому я за bool :rolleyes:
                  Сообщение отредактировано: MOHAX -
                    Почему не выполнится
                    if( IsValid() == FALSE ) {
                    }
                    понятно, потому что FALSE на самом деле это 0.
                    Как правильно заметил Трейнер, это всего лишь проблема использования магических констант. Проблема легко лечится битием по рукам: если магическая константа не равно 0, то её необходимо тчательно документировать :yes: (и бить по рукам того, кто это не делает)
                    1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,1343 ]   [ 14 queries used ]   [ Generated: 16.07.25, 12:09 GMT ]